Code changes to handle draft submission authors without email addresses better.
- Legacy-Id: 12063
This commit is contained in:
parent
69263b8f8f
commit
da2c25182f
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue