Some people send cover letters (and therefore series) as replies to existing series. Apply a second set of heuristics to cover this case:
* The message contains a '[0/n]' marker tag in the subject * The message is not the root message, but the subject is unique, i.e. it is not a reply to a cover letter already stored in Patchwork It is theoretically possible that the message could be a reply to a cover letter that's been missed, but such occurences should be rare and only get rarer the longer an instance is running. Note that there is a third case which is not yet covered: a cover letter with the same name but a different number of patches. This will have to wait until series support is fully inplemented. Signed-off-by: Stephen Finucane <[email protected]> --- patchwork/bin/parsemail.py | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/patchwork/bin/parsemail.py b/patchwork/bin/parsemail.py index a61b02a..0ccbffc 100755 --- a/patchwork/bin/parsemail.py +++ b/patchwork/bin/parsemail.py @@ -496,22 +496,36 @@ def parse_mail(mail, list_id=None): LOGGER.debug('Patch saved') return patch - elif refs == [] and x == 0: # cover letters + elif x == 0: # (potential) cover letters if save_required: author.save() - cover_letter = CoverLetter( - msgid=msgid, - project=project, - name=name, - date=date, - headers=headers, - submitter=author, - content=message) - cover_letter.save() - LOGGER.debug('Cover letter saved') - - return cover_letter + # if refs are empty, it's implicitly a cover letter. If not, + # 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: # no match => new cover + is_cover_letter = True + else: + is_cover_letter = True + + + if is_cover_letter: + cover_letter = CoverLetter( + msgid=msgid, + project=project, + name=name, + date=date, + headers=headers, + submitter=author, + content=message) + cover_letter.save() + LOGGER.debug('Cover letter saved') + + return cover_letter # comments @@ -525,7 +539,7 @@ def parse_mail(mail, list_id=None): author.save() comment = Comment( - submission=patch, + submission=submission, msgid=msgid, date=date, headers=headers, -- 2.0.0 _______________________________________________ Patchwork mailing list [email protected] https://lists.ozlabs.org/listinfo/patchwork
