Skip to content

Commit 2009afe

Browse files
committed
preparing to merge forward to 6.31
- Legacy-Id: 11875
1 parent b6978de commit 2009afe

5 files changed

Lines changed: 45 additions & 13 deletions

File tree

ietf/mailtrigger/models.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,15 +190,20 @@ def gather_submission_group_chairs(self, **kwargs):
190190

191191
def gather_submission_confirmers(self, **kwargs):
192192
"""If a submitted document is revising an existing document, the confirmers
193-
are the authors of that existing document. Otherwise, the confirmers
193+
are the authors of that existing document, and the chairs if the document is
194+
a working group document and the author list has changed. Otherwise, the confirmers
194195
are the authors and submitter of the submitted document."""
195196

196197
addrs=[]
197198
if 'submission' in kwargs:
198199
submission = kwargs['submission']
199200
doc=submission.existing_document()
200201
if doc:
201-
addrs.extend([i.author.formatted_email() for i in doc.documentauthor_set.all() if not i.author.invalid_address()])
202+
old_authors = [i.author.formatted_email() for i in doc.documentauthor_set.all() if not i.author.invalid_address()]
203+
new_authors = [u'"%s" <%s>' % (author["name"], author["email"]) for author in submission.authors_parsed() if author["email"]]
204+
addrs.extend(old_authors)
205+
if doc.group and set(old_authors)!=set(new_authors):
206+
addrs.extend(Recipient.objects.get(slug='group_chairs').gather(**{'group':doc.group}))
202207
else:
203208
addrs.extend([u"%s <%s>" % (author["name"], author["email"]) for author in submission.authors_parsed() if author["email"]])
204209
if submission.submitter_parsed()["email"]:

ietf/submit/mail.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from ietf.utils.accesstoken import generate_access_token
1111
from ietf.mailtrigger.utils import gather_address_lists
1212

13-
def send_submission_confirmation(request, submission):
13+
def send_submission_confirmation(request, submission, chair_notice=False):
1414
subject = 'Confirm submission of I-D %s' % submission.name
1515
from_email = settings.IDSUBMIT_FROM_EMAIL
1616
(to_email, cc) = gather_address_lists('sub_confirmation_requested',submission=submission)
@@ -23,6 +23,7 @@ def send_submission_confirmation(request, submission):
2323
'submission': submission,
2424
'confirm_url': confirm_url,
2525
'status_url': status_url,
26+
'chair_notice': chair_notice,
2627
},
2728
cc=cc)
2829

ietf/submit/tests.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from ietf.utils.test_utils import TestCase
1616
from ietf.meeting.models import Meeting
1717
from ietf.submit.utils import expirable_submissions, expire_submission, ensure_person_email_info_exists
18-
from ietf.person.models import Person
18+
from ietf.person.models import Person, Email
1919
from ietf.group.models import Group
2020
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotDocEvent, BallotPositionDocEvent, DocumentAuthor
2121
from ietf.submit.models import Submission, Preapproval
@@ -263,14 +263,19 @@ def text_submit_new_wg_xml(self):
263263
def text_submit_new_wg_txt_xml(self):
264264
self.submit_new_wg(["txt", "xml"])
265265

266-
def submit_existing(self, formats):
266+
def submit_existing(self, formats, change_authors=True):
267267
# submit new revision of existing -> supply submitter info -> prev authors confirm
268268
draft = make_test_data()
269-
prev_author = draft.documentauthor_set.all()[0]
269+
if not change_authors:
270+
draft.documentauthor_set.all().delete()
271+
ensure_person_email_info_exists('Author Name','author@example.com')
272+
draft.documentauthor_set.create(author=Email.objects.get(address='author@example.com'))
273+
else:
274+
# Make it such that one of the previous authors has an invalid email address
275+
bogus_email = ensure_person_email_info_exists('Bogus Person',None)
276+
DocumentAuthor.objects.create(document=draft,author=bogus_email,order=draft.documentauthor_set.latest('order').order+1)
270277

271-
# Make it such that one of the previous authors has an invalid email address
272-
bogus_email = ensure_person_email_info_exists('Bogus Person',None)
273-
DocumentAuthor.objects.create(document=draft,author=bogus_email,order=draft.documentauthor_set.latest('order').order+1)
278+
prev_author = draft.documentauthor_set.all()[0]
274279

275280
# pretend IANA reviewed it
276281
draft.set_state(State.objects.get(used=True, type="draft-iana-review", slug="not-ok"))
@@ -316,11 +321,18 @@ def submit_existing(self, formats):
316321
self.assertTrue("Confirm submission" in confirm_email["Subject"])
317322
self.assertTrue(name in confirm_email["Subject"])
318323
self.assertTrue(prev_author.author.address in confirm_email["To"])
319-
# submitter and new author can't confirm
320-
self.assertTrue("author@example.com" not in confirm_email["To"])
324+
if change_authors:
325+
self.assertTrue("author@example.com" not in confirm_email["To"])
321326
self.assertTrue("submitter@example.com" not in confirm_email["To"])
322327
# Verify that mail wasn't sent to know invalid addresses
323328
self.assertTrue("unknown-email-" not in confirm_email["To"])
329+
if change_authors:
330+
# Since authors changed, ensure chairs are copied (and that the message says why)
331+
self.assertTrue("chairs have been copied" in unicode(confirm_email))
332+
self.assertTrue("mars-chairs@" in confirm_email["To"].lower())
333+
else:
334+
self.assertTrue("chairs have been copied" not in unicode(confirm_email))
335+
self.assertTrue("mars-chairs@" not in confirm_email["To"].lower())
324336

325337
confirm_url = self.extract_confirm_url(confirm_email)
326338

@@ -373,6 +385,9 @@ def test_submit_existing_xml(self):
373385
def test_submit_existing_txt_xml(self):
374386
self.submit_existing(["txt", "xml"])
375387

388+
def test_submit_existing_txt_preserve_authors(self):
389+
self.submit_existing(["txt"],change_authors=False)
390+
376391
def submit_new_individual(self, formats):
377392
# submit new -> supply submitter info -> confirm
378393
draft = make_test_data()
@@ -430,6 +445,8 @@ def test_submit_new_individual_txt_xml(self):
430445

431446
def test_submit_update_individual(self):
432447
draft = make_test_data()
448+
draft.group = None
449+
draft.save()
433450
replaces_count = draft.relateddocument_set.filter(relationship_id='replaces').count()
434451
name = draft.name
435452
rev = '%02d'%(int(draft.rev)+1)

ietf/submit/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,13 @@ def submission_status(request, submission_id, access_token=None):
208208

209209
requires_prev_authors_approval = Document.objects.filter(name=submission.name)
210210

211+
group_authors_changed = False
212+
doc = submission.existing_document()
213+
if doc and doc.group:
214+
old_authors = [i.author.formatted_email() for i in doc.documentauthor_set.all() if not i.author.invalid_address()]
215+
new_authors = [u'"%s" <%s>' % (author["name"], author["email"]) for author in submission.authors_parsed() if author["email"]]
216+
group_authors_changed = set(old_authors)!=set(new_authors)
217+
211218
message = None
212219

213220
if submission.state_id == "cancel":
@@ -253,7 +260,7 @@ def submission_status(request, submission_id, access_token=None):
253260
submission.state = DraftSubmissionStateName.objects.get(slug="auth")
254261
submission.save()
255262

256-
sent_to = send_submission_confirmation(request, submission)
263+
sent_to = send_submission_confirmation(request, submission, chair_notice=group_authors_changed)
257264

258265
if submission.state_id == "aut-appr":
259266
desc = u"sent confirmation email to previous authors: %s" % u", ".join(sent_to)

ietf/templates/submit/confirm_submission.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ Hi,
44
The IETF datatracker draft submission service has received your draft
55
{{ submission.name }}-{{ submission.rev }}, and requires a
66
confirmation step in order to be able to complete the posting of
7-
the draft.
7+
the draft.{% if chair_notice %}
88

9+
The chairs have been copied since this is a group document whose author list has changed.
10+
{%endif%}
911
Please follow this link to the page where you can confirm the posting:
1012

1113
{{ confirm_url }}

0 commit comments

Comments
 (0)