[PATCH v6 1/2] parsemail: Convert to a management command
Stephen Finucane
stephenfinucane at hotmail.com
Tue Sep 20 09:08:55 AEST 2016
On 20 Sep 01:22, Daniel Axtens wrote:
> So, umm, I went ahead and had a crack at this.
>
> It turns out this is hideously difficult to get right. But this plus my
> other patch to fix Thomas' problem should have things working on Py2 and
> Py3 with this series.
>
> It's a bit of a work in progress: I need to close the file at the end
> of the function, the logging needs to be added again, etc.
>
> Tests to come.
>
> Stephen: I can do this up into a proper patch if you like or you can
> fold it into your series.
>
> Regards,
> Daniel
I don't have the offending patch on hand, but isn't the issue with the
headers. If so, would something like the below do (I haven't tested
it - there could be typos).
I'll review this if not.
Stephen
diff --git a/patchwork/parser.py b/patchwork/parser.py
index 1805df8..7917e97 100644
--- a/patchwork/parser.py
+++ b/patchwork/parser.py
@@ -21,7 +21,8 @@
import codecs
import datetime
-from email.header import Header, decode_header
+from email.header import decode_header
+from email.header import make_header
from email.utils import parsedate_tz, mktime_tz
from fnmatch import fnmatch
from functools import reduce
@@ -155,10 +156,10 @@ def find_date(mail):
def find_headers(mail):
- return reduce(operator.__concat__,
- ['%s: %s\n' % (k, Header(v, header_name=k,
- continuation_ws='\t').encode())
- for (k, v) in list(mail.items())])
+ headers = {key: decode_header(value) for key, value in list(mail.items())}
+ return '\n'.join(['%s: %s' % (key, make_header(value[0], header_name=key,
+ continuation_wd='\t'))
+ for key, value in headers])
def find_references(mail):
More information about the Patchwork
mailing list