Code changes to handle draft submission authors without email addresses better.

- Legacy-Id: 12063
This commit is contained in:
Henrik Levkowetz 2016-09-30 10:48:46 +00:00
parent 69263b8f8f
commit da2c25182f
3 changed files with 24 additions and 17 deletions

View file

@ -4,6 +4,8 @@ import datetime
from django.db import models
import jsonfield
import debug # pyflakes:ignore
from ietf.doc.models import Document
from ietf.person.models import Person
from ietf.group.models import Group
@ -52,12 +54,18 @@ class Submission(models.Model):
return u"%s-%s" % (self.name, self.rev)
def authors_parsed(self):
if not hasattr(self._meta, '_cached_authors_parsed'):
from ietf.submit.utils import ensure_person_email_info_exists
res = []
for line in self.authors.replace("\r", "").split("\n"):
line = line.strip()
if line:
res.append(parse_email_line(line))
return res
parsed = parse_email_line(line)
if not parsed["email"]:
parsed["email"] = ensure_person_email_info_exists(**parsed).address
res.append(parsed)
self._meta._cached_authors_parsed = res
return self._meta._cached_authors_parsed
def submitter_parsed(self):
return parse_email_line(self.submitter)

View file

@ -3,6 +3,8 @@ import datetime
from django.conf import settings
import debug # pyflakes:ignore
from ietf.doc.models import ( Document, State, DocAlias, DocEvent,
DocumentAuthor, AddedMessageEvent )
from ietf.doc.models import NewRevisionDocEvent
@ -395,7 +397,7 @@ def ensure_person_email_info_exists(name, email):
else:
# we're in trouble, use a fake one
active = False
addr = u"unknown-email-%s" % person.name.replace(" ", "-")
addr = u"unknown-email-%s" % person.plain_name().replace(" ", "-")
try:
email = person.email_set.get(address=addr)
@ -421,10 +423,8 @@ def update_authors(draft, submission):
for order, author in enumerate(submission.authors_parsed()):
email = ensure_person_email_info_exists(author["name"], author["email"])
a = DocumentAuthor.objects.filter(document=draft, author=email)
if a:
a = a[0]
else:
a = DocumentAuthor.objects.filter(document=draft, author=email).first()
if not a:
a = DocumentAuthor(document=draft, author=email)
a.order = order

View file

@ -27,10 +27,9 @@ from ietf.submit.mail import ( send_full_url, send_approval_request_to_group,
from ietf.submit.models import (Submission, SubmissionCheck, Preapproval,
DraftSubmissionStateName, SubmissionEmailEvent )
from ietf.submit.utils import ( approvable_submissions_for_user, preapprovals_for_user,
recently_approved_by_user )
from ietf.submit.utils import validate_submission, create_submission_event
from ietf.submit.utils import docevent_from_submission
from ietf.submit.utils import post_submission, cancel_submission, rename_submission_files
recently_approved_by_user, validate_submission, create_submission_event,
docevent_from_submission, post_submission, cancel_submission, rename_submission_files,
get_person_from_name_email )
from ietf.utils.accesstoken import generate_random_key, generate_access_token
from ietf.utils.draft import Draft
from ietf.utils.log import log
@ -275,8 +274,8 @@ def submission_status(request, submission_id, access_token=None):
group_authors_changed = False
doc = submission.existing_document()
if doc and doc.group:
old_authors = [i.author.formatted_email() for i in doc.documentauthor_set.all() if not i.author.invalid_address()]
new_authors = [u'"%s" <%s>' % (author["name"], author["email"]) for author in submission.authors_parsed() if author["email"]]
old_authors = [ i.author.person for i in doc.documentauthor_set.all() ]
new_authors = [ get_person_from_name_email(**p) for p in submission.authors_parsed() ]
group_authors_changed = set(old_authors)!=set(new_authors)
message = None