Skip to content

Commit 90fe398

Browse files
committed
Changed which email addresses the submission tool uses for confirmation emails and sending out full submission status URLs from the emails found in the submitted document (which could be empty, broken, or intentionally different than the original authors) to the author emails from the previous version, where a previous version exists. This fixes breakage which can occur when no valid email addresses can be found in a broken submission, and also ensures that at least one of the authors of a previous version signs off on a new version, preventing submission hijacking.
- Legacy-Id: 5650
1 parent 0b26b9f commit 90fe398

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

ietf/submit/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ def save(self, request):
354354
def send_confirmation_mail(self, request):
355355
subject = 'Confirmation for Auto-Post of I-D %s' % self.draft.filename
356356
from_email = settings.IDSUBMIT_FROM_EMAIL
357-
to_email = self.cleaned_data['email']
357+
to_email = self.draft.confirmation_email_list()
358358

359359
confirm_url = settings.IDTRACKER_BASE_URL + urlreverse('draft_confirm', kwargs=dict(submission_id=self.draft.submission_id, auth_key=self.draft.auth_key))
360360
status_url = settings.IDTRACKER_BASE_URL + urlreverse('draft_status_by_hash', kwargs=dict(submission_id=self.draft.submission_id, submission_hash=self.draft.get_hash()))

ietf/submit/models.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import re, datetime
1+
import re, datetime #
22

33
from django.conf import settings
44
from django.db import models
55
from django.utils.hashcompat import md5_constructor
66

7-
from ietf.idtracker.models import IETFWG
7+
from ietf.idtracker.models import InternetDraft, IETFWG
88
from ietf.person.models import Person
99

1010

@@ -68,6 +68,15 @@ def status_link(self):
6868
return '<a href="http://datatracker.ietf.org/submit/status/%s/%s/">%s</a>' % (self.submission_id, self.submission_hash, self.status)
6969
status_link.allow_tags = True
7070

71+
def confirmation_email_list(self):
72+
try:
73+
draft = InternetDraft.objects.get(filename=self.filename)
74+
email_list = list(set(u'%s <%s>' % (i.person.name, i.email()) for i in draft.authors))
75+
import debug
76+
debug.show('email_list')
77+
except InternetDraft.DoesNotExist:
78+
email_list = list(set(u'%s <%s>' % i.email() for i in self.tempidauthors_set.all()))
79+
return email_list
7180

7281
def create_submission_hash(sender, instance, **kwargs):
7382
instance.create_hash()

ietf/submit/utils.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
def request_full_url(request, submission):
3838
subject = 'Full URL for managing submission of draft %s' % submission.filename
3939
from_email = settings.IDSUBMIT_FROM_EMAIL
40-
to_email = list(set(u'%s <%s>' % i.email() for i in submission.tempidauthors_set.all()))
40+
to_email = submission.confirmation_email_list()
4141
url = settings.IDTRACKER_BASE_URL + urlreverse('draft_status_by_hash',
4242
kwargs=dict(submission_id=submission.submission_id,
4343
submission_hash=submission.get_hash()))
@@ -295,9 +295,8 @@ def announce_new_versionREDESIGN(request, submission, draft, state_change_msg):
295295
announce_new_version = announce_new_versionREDESIGN
296296

297297
def announce_to_authors(request, submission):
298-
authors = submission.tempidauthors_set.order_by('author_order')
299-
cc = list(set(i.email()[1] for i in authors if i.email() != authors[0].email()))
300-
to_email = [authors[0].email()[1]] # First TempIdAuthor is submitter
298+
authors = submission.tempidauthors_set.all()
299+
to_email = list(set(submission.confirmation_email_list() + [u'%s <%s>' % i.email() for i in authors]))
301300
from_email = settings.IDSUBMIT_ANNOUNCE_FROM_EMAIL
302301
subject = 'New Version Notification for %s-%s.txt' % (submission.filename, submission.revision)
303302
if submission.group_acronym:
@@ -309,7 +308,7 @@ def announce_to_authors(request, submission):
309308
send_mail(request, to_email, from_email, subject, 'submit/announce_to_authors.txt',
310309
{'submission': submission,
311310
'submitter': authors[0].get_full_name(),
312-
'wg': wg}, cc=cc)
311+
'wg': wg})
313312

314313

315314
def find_person(first_name, last_name, middle_initial, name_suffix, email):

0 commit comments

Comments
 (0)