summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
30bb271)
Django 1.8 no longer supports assignment of unsaved models to
ForeignKey fields:
File "/home/jk/devel/patchwork/patchwork/tests/test_patchparser.py", line 75, in setUp
(self.patch, self.comment) = find_content(self.project, email)
File "/home/jk/devel/patchwork/patchwork/bin/parsemail.py", line 231, in find_content
headers = mail_headers(mail))
File "/home/jk/devel/patchwork/lib/python/django/db/models/base.py", line 468, in __init__
setattr(self, field.name, rel_obj)
File "/home/jk/devel/patchwork/lib/python/django/db/models/fields/related.py", line 668, in __set__
(value, self.field.rel.to._meta.object_name)
ValueError: Cannot assign "<Patch: Test Subject>": "Patch" instance isn't saved in the database.
Even though we'd be guaranteed to save the patch before the comment, we
need to avoid this error.
This change defers the assigment of Comment.patch until we know we have
a saved Patch instance.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
date = mail_date(mail), headers = mail_headers(mail))
if commentbuf:
date = mail_date(mail), headers = mail_headers(mail))
if commentbuf:
+ # If this is a new patch, we defer setting comment.patch until
+ # patch has been saved by the caller
+ comment = Comment(date = mail_date(mail),
+ content = clean_content(commentbuf),
+ headers = mail_headers(mail))
+
else:
cpatch = find_patch_for_comment(project, mail)
if not cpatch:
return (None, None)
else:
cpatch = find_patch_for_comment(project, mail)
if not cpatch:
return (None, None)
- comment = Comment(patch = cpatch, date = mail_date(mail),
- content = clean_content(commentbuf),
- headers = mail_headers(mail))
+ comment = Comment(patch = cpatch, date = mail_date(mail),
+ content = clean_content(commentbuf),
+ headers = mail_headers(mail))
if comment:
if save_required:
author.save()
if comment:
if save_required:
author.save()
- # looks like the original constructor for Comment takes the pk
- # when the Comment is created. reset it here.
+ # we defer this assignment until we know that we have a saved patch
if patch:
comment.patch = patch
comment.submitter = author
if patch:
comment.patch = patch
comment.submitter = author