summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2008-09-20 13:21:28 +1000
committerJeremy Kerr <jk@ozlabs.org>2008-09-20 13:21:28 +1000
commit07ded8bef209073969ca66049c91783ce59fc0f7 (patch)
treef02d74fb0970f478a4028812dafbd81acf154949 /apps
parent6bc7f923bbe48a76d34377aa35a841f38500f0c9 (diff)
downloadpatchwork-07ded8bef209073969ca66049c91783ce59fc0f7.tar.bz2
patchwork-07ded8bef209073969ca66049c91783ce59fc0f7.tar.xz
[parser] Fix spacing for encoded headers
We need to join the fragments with a space. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps')
-rwxr-xr-xapps/patchwork/bin/parsemail.py20
-rw-r--r--apps/patchwork/tests/patchparser.py2
2 files changed, 13 insertions, 9 deletions
diff --git a/apps/patchwork/bin/parsemail.py b/apps/patchwork/bin/parsemail.py
index a3edad4..e2beeae 100755
--- a/apps/patchwork/bin/parsemail.py
+++ b/apps/patchwork/bin/parsemail.py
@@ -38,16 +38,22 @@ from patchwork.models import Patch, Project, Person, Comment
list_id_headers = ['List-ID', 'X-Mailing-List']
+whitespace_re = re.compile('\s+')
+def normalise_space(str):
+ return whitespace_re.sub(' ', str).strip()
+
def clean_header(header):
""" Decode (possibly non-ascii) headers """
- def decode(str, fragment):
+ def decode(fragment):
(frag_str, frag_encoding) = fragment
if frag_encoding:
- return str + frag_str.decode(frag_encoding)
- return str + frag_str.decode()
+ return frag_str.decode(frag_encoding)
+ return frag_str.decode()
- return reduce(decode, decode_header(header), u'').strip()
+ fragments = map(decode, decode_header(header))
+
+ return normalise_space(u' '.join(fragments))
def find_project(mail):
project = None
@@ -234,7 +240,6 @@ def split_prefixes(prefix):
re_re = re.compile('^(re|fwd?)[:\s]\s*', re.I)
prefix_re = re.compile('^\[([^\]]*)\]\s*(.*)$')
-whitespace_re = re.compile('\s+')
def clean_subject(subject, drop_prefixes = None):
""" Clean a Subject: header from an incoming patch.
@@ -286,8 +291,7 @@ def clean_subject(subject, drop_prefixes = None):
# remove Re:, Fwd:, etc
subject = re_re.sub(' ', subject)
- # normalise whitespace
- subject = whitespace_re.sub(' ', subject)
+ subject = normalise_space(subject)
prefixes = []
@@ -301,7 +305,7 @@ def clean_subject(subject, drop_prefixes = None):
subject = match.group(2)
match = prefix_re.match(subject)
- subject = whitespace_re.sub(' ', subject)
+ subject = normalise_space(subject)
subject = subject.strip()
if prefixes:
diff --git a/apps/patchwork/tests/patchparser.py b/apps/patchwork/tests/patchparser.py
index 61ab57d..6d315f0 100644
--- a/apps/patchwork/tests/patchparser.py
+++ b/apps/patchwork/tests/patchparser.py
@@ -171,7 +171,7 @@ class SenderUTF8QPEncodingTest(SenderEncodingTest):
class SenderUTF8QPSplitEncodingTest(SenderEncodingTest):
sender_name = u'\xe9xample user'
- from_header = '=?utf-8?q?=C3=A9xample=20?= user <user@example.com>'
+ from_header = '=?utf-8?q?=C3=A9xample?= user <user@example.com>'
class SenderUTF8B64EncodingTest(SenderUTF8QPEncodingTest):
from_header = '=?utf-8?B?w6l4YW1wbGUgdXNlcg==?= <user@example.com>'