From: WEN Pingbo <[email protected]> If the subject of a submission is prefixed by 'Re:', then it can't be a patch or cover letter.
Signed-off-by: WEN Pingbo <[email protected]> --- patchwork/parser.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/patchwork/parser.py b/patchwork/parser.py index 1805df8..a4b20a8 100644 --- a/patchwork/parser.py +++ b/patchwork/parser.py @@ -303,6 +303,10 @@ def split_prefixes(prefix): return [s for s in matches if s != ''] +def subject_check(subject): + comment_re = re.compile(r'^(re)[:\s]\s*', re.I) + + return comment_re.match(subject) def clean_subject(subject, drop_prefixes=None): """Clean a Subject: header from an incoming patch. @@ -620,7 +624,9 @@ def parse_mail(mail, list_id=None): msgid = mail.get('Message-Id').strip() author = find_author(mail) - name, prefixes = clean_subject(mail.get('Subject'), [project.linkname]) + subject = mail.get('Subject') + name, prefixes = clean_subject(subject, [project.linkname]) + is_comment = subject_check(subject) x, n = parse_series_marker(prefixes) refs = find_references(mail) date = find_date(mail) @@ -629,7 +635,7 @@ def parse_mail(mail, list_id=None): # build objects - if diff or pull_url: # patches or pull requests + if not is_comment and (diff or pull_url): # patches or pull requests # we delay the saving until we know we have a patch. author.save() @@ -659,17 +665,18 @@ def parse_mail(mail, list_id=None): # however, we need to see if a match already exists and, if # not, assume that it is indeed a new cover letter is_cover_letter = False - if not refs == []: - try: - CoverLetter.objects.all().get(name=name) - except CoverLetter.DoesNotExist: - # if no match, this is a new cover letter + if not is_comment: + if not refs == []: + try: + CoverLetter.objects.all().get(name=name) + except CoverLetter.DoesNotExist: + # if no match, this is a new cover letter + is_cover_letter = True + except CoverLetter.MultipleObjectsReturned: + # if multiple cover letters are found, just ignore + pass + else: is_cover_letter = True - except CoverLetter.MultipleObjectsReturned: - # if multiple cover letters are found, just ignore - pass - else: - is_cover_letter = True if is_cover_letter: author.save() @@ -694,6 +701,9 @@ def parse_mail(mail, list_id=None): if not submission: return + if is_comment and diff: + message += diff + author.save() comment = Comment( -- 1.9.1 _______________________________________________ Patchwork mailing list [email protected] https://lists.ozlabs.org/listinfo/patchwork
