#21083: add get_content_disposition method to email.message.
Patch by Abhilash Raj.
This commit is contained in:
parent
b9cec6a30f
commit
b744f3a45e
@ -578,6 +578,15 @@ Here are the methods of the :class:`Message` class:
|
||||
will be *failobj*.
|
||||
|
||||
|
||||
.. method:: get_content_disposition()
|
||||
|
||||
Return the lowercased value (without parameters) of the message's
|
||||
:mailheader:`Content-Disposition` header if it has one, or ``None``. The
|
||||
possible values for this method are *inline*, *attachment* or ``None``
|
||||
if the message follows :rfc:`2183`.
|
||||
|
||||
.. versionadded:: 3.5
|
||||
|
||||
.. method:: walk()
|
||||
|
||||
The :meth:`walk` method is an all-purpose generator which can be used to
|
||||
|
@ -348,6 +348,14 @@ doctest
|
||||
*module* contains no docstrings instead of raising :exc:`ValueError`.
|
||||
(Contributed by Glenn Jones in :issue:`15916`.)
|
||||
|
||||
email
|
||||
-----
|
||||
|
||||
* A new method :meth:`~email.message.Message.get_content_disposition` provides
|
||||
easy access to a canonical value for the :mailheader:`Content-Disposition`
|
||||
header (``None`` if there is no such header). (Contributed by Abhilash Raj
|
||||
in :issue:`21083`.)
|
||||
|
||||
glob
|
||||
----
|
||||
|
||||
|
@ -927,6 +927,18 @@ class Message:
|
||||
"""
|
||||
return [part.get_content_charset(failobj) for part in self.walk()]
|
||||
|
||||
def get_content_disposition(self):
|
||||
"""Return the message's content-disposition if it exists, or None.
|
||||
|
||||
The return values can be either 'inline', 'attachment' or None
|
||||
according to the rfc2183.
|
||||
"""
|
||||
value = self.get('content-disposition')
|
||||
if value is None:
|
||||
return None
|
||||
c_d = _splitparam(value)[0].lower()
|
||||
return c_d
|
||||
|
||||
# I.e. def walk(self): ...
|
||||
from email.iterators import walk
|
||||
|
||||
|
@ -586,6 +586,17 @@ class TestMessageAPI(TestEmailBase):
|
||||
eq(msg.values(), ['One Hundred', 'Twenty', 'Three', 'Eleven'])
|
||||
self.assertRaises(KeyError, msg.replace_header, 'Fourth', 'Missing')
|
||||
|
||||
def test_get_content_disposition(self):
|
||||
msg = Message()
|
||||
self.assertIsNone(msg.get_content_disposition())
|
||||
msg.add_header('Content-Disposition', 'attachment',
|
||||
filename='random.avi')
|
||||
self.assertEqual(msg.get_content_disposition(), 'attachment')
|
||||
msg.replace_header('Content-Disposition', 'inline')
|
||||
self.assertEqual(msg.get_content_disposition(), 'inline')
|
||||
msg.replace_header('Content-Disposition', 'InlinE')
|
||||
self.assertEqual(msg.get_content_disposition(), 'inline')
|
||||
|
||||
# test_defect_handling:test_invalid_chars_in_base64_payload
|
||||
def test_broken_base64_payload(self):
|
||||
x = 'AwDp0P7//y6LwKEAcPa/6Q=9'
|
||||
|
Loading…
x
Reference in New Issue
Block a user