Skip to content

Commit da2c251

Browse files
committed
Code changes to handle draft submission authors without email addresses better.
- Legacy-Id: 12063
1 parent 69263b8 commit da2c251

3 files changed

Lines changed: 24 additions & 17 deletions

File tree

ietf/submit/models.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from django.db import models
55
import jsonfield
66

7+
import debug # pyflakes:ignore
8+
79
from ietf.doc.models import Document
810
from ietf.person.models import Person
911
from ietf.group.models import Group
@@ -52,12 +54,18 @@ def __unicode__(self):
5254
return u"%s-%s" % (self.name, self.rev)
5355

5456
def authors_parsed(self):
55-
res = []
56-
for line in self.authors.replace("\r", "").split("\n"):
57-
line = line.strip()
58-
if line:
59-
res.append(parse_email_line(line))
60-
return res
57+
if not hasattr(self._meta, '_cached_authors_parsed'):
58+
from ietf.submit.utils import ensure_person_email_info_exists
59+
res = []
60+
for line in self.authors.replace("\r", "").split("\n"):
61+
line = line.strip()
62+
if line:
63+
parsed = parse_email_line(line)
64+
if not parsed["email"]:
65+
parsed["email"] = ensure_person_email_info_exists(**parsed).address
66+
res.append(parsed)
67+
self._meta._cached_authors_parsed = res
68+
return self._meta._cached_authors_parsed
6169

6270
def submitter_parsed(self):
6371
return parse_email_line(self.submitter)

ietf/submit/utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
from django.conf import settings
55

6+
import debug # pyflakes:ignore
7+
68
from ietf.doc.models import ( Document, State, DocAlias, DocEvent,
79
DocumentAuthor, AddedMessageEvent )
810
from ietf.doc.models import NewRevisionDocEvent
@@ -395,7 +397,7 @@ def ensure_person_email_info_exists(name, email):
395397
else:
396398
# we're in trouble, use a fake one
397399
active = False
398-
addr = u"unknown-email-%s" % person.name.replace(" ", "-")
400+
addr = u"unknown-email-%s" % person.plain_name().replace(" ", "-")
399401

400402
try:
401403
email = person.email_set.get(address=addr)
@@ -421,10 +423,8 @@ def update_authors(draft, submission):
421423
for order, author in enumerate(submission.authors_parsed()):
422424
email = ensure_person_email_info_exists(author["name"], author["email"])
423425

424-
a = DocumentAuthor.objects.filter(document=draft, author=email)
425-
if a:
426-
a = a[0]
427-
else:
426+
a = DocumentAuthor.objects.filter(document=draft, author=email).first()
427+
if not a:
428428
a = DocumentAuthor(document=draft, author=email)
429429

430430
a.order = order

ietf/submit/views.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@
2727
from ietf.submit.models import (Submission, SubmissionCheck, Preapproval,
2828
DraftSubmissionStateName, SubmissionEmailEvent )
2929
from ietf.submit.utils import ( approvable_submissions_for_user, preapprovals_for_user,
30-
recently_approved_by_user )
31-
from ietf.submit.utils import validate_submission, create_submission_event
32-
from ietf.submit.utils import docevent_from_submission
33-
from ietf.submit.utils import post_submission, cancel_submission, rename_submission_files
30+
recently_approved_by_user, validate_submission, create_submission_event,
31+
docevent_from_submission, post_submission, cancel_submission, rename_submission_files,
32+
get_person_from_name_email )
3433
from ietf.utils.accesstoken import generate_random_key, generate_access_token
3534
from ietf.utils.draft import Draft
3635
from ietf.utils.log import log
@@ -275,8 +274,8 @@ def submission_status(request, submission_id, access_token=None):
275274
group_authors_changed = False
276275
doc = submission.existing_document()
277276
if doc and doc.group:
278-
old_authors = [i.author.formatted_email() for i in doc.documentauthor_set.all() if not i.author.invalid_address()]
279-
new_authors = [u'"%s" <%s>' % (author["name"], author["email"]) for author in submission.authors_parsed() if author["email"]]
277+
old_authors = [ i.author.person for i in doc.documentauthor_set.all() ]
278+
new_authors = [ get_person_from_name_email(**p) for p in submission.authors_parsed() ]
280279
group_authors_changed = set(old_authors)!=set(new_authors)
281280

282281
message = None

0 commit comments

Comments
 (0)