From: Damien Lespiau Date: Sun, 25 May 2014 17:41:49 +0000 (+0100) Subject: parsemail: Extract building the list of mail references X-Git-Tag: v2.0.0-rc1~362 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96d963c33c3b2008e9d940ce0021c4e9e8977ec2;p=thirdparty%2Fpatchwork.git parsemail: Extract building the list of mail references We'll need to figure out whether the mail we are parsing is the root of the thread to automatically build series, and we'll need the list of references for that. Signed-off-by: Damien Lespiau Signed-off-by: Stephen Finucane --- diff --git a/patchwork/bin/parsemail.py b/patchwork/bin/parsemail.py index 3ade49e5..ae1ccb23 100755 --- a/patchwork/bin/parsemail.py +++ b/patchwork/bin/parsemail.py @@ -193,6 +193,23 @@ def try_decode(payload, charset): return payload +def build_references_list(mail): + """Construct a list of possible reply message ids.""" + refs = [] + + if 'In-Reply-To' in mail: + refs.append(mail.get('In-Reply-To')) + + if 'References' in mail: + rs = mail.get('References').split() + rs.reverse() + for r in rs: + if r not in refs: + refs.append(r) + + return refs + + def parse_series_marker(subject_prefixes): """Extract series markers from subject. @@ -286,7 +303,8 @@ def find_content(project, mail): headers=mail_headers(mail)) if commentbuf and not patch: - cpatch = find_patch_for_comment(project, mail) + refs = build_references_list(mail) + cpatch = find_patch_for_comment(project, refs) if not cpatch: return (None, None, None) comment = Comment(submission=cpatch, @@ -297,19 +315,7 @@ def find_content(project, mail): return (patch, comment, filenames) -def find_patch_for_comment(project, mail): - # construct a list of possible reply message ids - refs = [] - if 'In-Reply-To' in mail: - refs.append(mail.get('In-Reply-To')) - - if 'References' in mail: - rs = mail.get('References').split() - rs.reverse() - for r in rs: - if r not in refs: - refs.append(r) - +def find_patch_for_comment(project, refs): for ref in refs: patch = None