Skip to content

Commit 6c85bc5

Browse files
committed
checkpoint. Sets initial notify to empty
- Legacy-Id: 10009
1 parent ecad71e commit 6c85bc5

11 files changed

Lines changed: 46 additions & 63 deletions

File tree

ietf/doc/mails.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,11 @@ def generate_ballot_writeup(request, doc):
105105

106106
def generate_last_call_announcement(request, doc):
107107
expiration_date = datetime.date.today() + datetime.timedelta(days=14)
108-
cc = []
109108
if doc.group.type_id in ("individ", "area"):
110109
group = "an individual submitter"
111110
expiration_date += datetime.timedelta(days=14)
112111
else:
113112
group = "the %s WG (%s)" % (doc.group.name, doc.group.acronym)
114-
if doc.group.list_email:
115-
cc.append(doc.group.list_email)
116113

117114
doc.filled_title = textwrap.fill(doc.title, width=70, subsequent_indent=" " * 3)
118115

@@ -127,7 +124,8 @@ def generate_last_call_announcement(request, doc):
127124
dict(doc=doc,
128125
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url() + "ballot/",
129126
expiration_date=expiration_date.strftime("%Y-%m-%d"), #.strftime("%B %-d, %Y"),
130-
cc=", ".join("<%s>" % e for e in cc),
127+
to=",\n ".join(gather_addresses('last_call_issued',doc=doc)),
128+
cc=",\n ".join(gather_addresses('last_call_issued_cc',doc=doc)),
131129
group=group,
132130
docs=[ doc ],
133131
urls=[ settings.IDTRACKER_BASE_URL + doc.get_absolute_url() ],
@@ -256,14 +254,17 @@ def generate_publication_request(request, doc):
256254
)
257255

258256
def send_last_call_request(request, doc):
259-
to = "iesg-secretary@ietf.org"
257+
to = gather_addresses('last_call_requested',doc=doc)
258+
cc = gather_addresses('last_call_requested_cc',doc=doc)
260259
frm = '"DraftTracker Mail System" <iesg-secretary@ietf.org>'
261260

262261
send_mail(request, to, frm,
263262
"Last Call: %s" % doc.file_tag(),
264263
"doc/mail/last_call_request.txt",
265264
dict(docs=[doc],
266-
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
265+
doc_url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url(),
266+
),
267+
cc=cc)
267268

268269
def email_resurrect_requested(request, doc, by):
269270
to = "I-D Administrator <internet-drafts@ietf.org>"

ietf/doc/tests_charter.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,7 @@ def test_edit_notify(self):
196196
self.assertEqual(charter.notify,newlist)
197197
q = PyQuery(r.content)
198198
formlist = q('form input[name=notify]')[0].value
199-
self.assertTrue('marschairman@ietf.org' in formlist)
200-
self.assertFalse('someone@example.com' in formlist)
199+
self.assertEqual(formlist, None)
201200

202201
def test_edit_ad(self):
203202
make_test_data()

ietf/doc/tests_conflict_review.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,7 @@ def test_edit_notices(self):
189189
# Regenerate does not save!
190190
self.assertEqual(doc.notify,newlist)
191191
q = PyQuery(r.content)
192-
self.assertTrue('draft-imaginary-irtf-submission@ietf.org' in q('form input[name=notify]')[0].value)
193-
self.assertTrue('irtf-chair@ietf.org' in q('form input[name=notify]')[0].value)
194-
self.assertTrue('foo@bar.baz.com' not in q('form input[name=notify]')[0].value)
192+
self.assertEqual(None,q('form input[name=notify]')[0].value)
195193

196194
def test_edit_ad(self):
197195
doc = Document.objects.get(name='conflict-review-imaginary-irtf-submission')

ietf/doc/tests_draft.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ def test_start_iesg_process_on_draft(self):
330330
self.assertEqual(r.status_code, 200)
331331
q = PyQuery(r.content)
332332
self.assertEqual(len(q('form select[name=intended_std_level]')), 1)
333-
self.assertTrue('@' in q('form input[name=notify]')[0].get('value'))
333+
self.assertEqual(None,q('form input[name=notify]')[0].value)
334334

335335
# add
336336
events_before = draft.docevent_set.count()
@@ -734,7 +734,7 @@ def test_doc_change_notify(self):
734734
# Regenerate does not save!
735735
self.assertEqual(self.doc.notify,'TJ2APh2P@ietf.org')
736736
q = PyQuery(r.content)
737-
self.assertTrue('TJ2Aph2P' not in q('form input[name=notify]')[0].value)
737+
self.assertEqual(None,q('form input[name=notify]')[0].value)
738738

739739
def test_doc_change_intended_status(self):
740740
url = urlreverse('doc_change_intended_status', kwargs=dict(name=self.docname))
@@ -1092,9 +1092,7 @@ def test_adopt_document(self):
10921092
self.assertEqual(draft.group.acronym, "mars")
10931093
self.assertEqual(draft.stream_id, "ietf")
10941094
self.assertEqual(draft.docevent_set.count() - events_before, 5)
1095-
self.assertTrue('draft-ietf-mars-test@ietf.org' in draft.notify)
1096-
self.assertTrue('draft-ietf-mars-test.ad@ietf.org' in draft.notify)
1097-
self.assertTrue('draft-ietf-mars-test.shepherd@ietf.org' in draft.notify)
1095+
self.assertEqual(draft.notify,"aliens@example.mars")
10981096
self.assertEqual(len(outbox), mailbox_before + 1)
10991097
self.assertTrue("state changed" in outbox[-1]["Subject"].lower())
11001098
self.assertTrue("marschairman@ietf.org" in unicode(outbox[-1]))

ietf/doc/tests_status_change.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ def test_change_state(self):
111111
doc = Document.objects.get(name='status-change-imaginary-mid-review')
112112
self.assertEquals(doc.get_state('statchg').slug,'lc-req')
113113
self.assertEquals(len(outbox), messages_before + 1)
114-
self.assertTrue('iesg-secretary' in outbox[-1]['To'])
115114
self.assertTrue('Last Call:' in outbox[-1]['Subject'])
116115

117116
# successful change to IESG Evaluation
@@ -157,9 +156,7 @@ def test_edit_notices(self):
157156
self.assertEqual(doc.notify,newlist)
158157
q = PyQuery(r.content)
159158
formlist = q('form input[name=notify]')[0].value
160-
self.assertTrue('draft-ietf-random-thing@ietf.org' in formlist)
161-
self.assertTrue('draft-ietf-random-otherthing@ietf.org' in formlist)
162-
self.assertFalse('foo@bar.baz.com' in formlist)
159+
self.assertEqual(None,formlist)
163160

164161
def test_edit_title(self):
165162
doc = Document.objects.get(name='status-change-imaginary-mid-review')
@@ -285,7 +282,6 @@ def test_edit_lc(self):
285282
self.assertEqual(r.status_code,200)
286283
self.assertTrue( 'Last call requested' in ''.join(wrap(r.content,2**16)))
287284
self.assertEqual(len(outbox), messages_before + 1)
288-
self.assertTrue('iesg-secretary' in outbox[-1]['To'])
289285
self.assertTrue('Last Call:' in outbox[-1]['Subject'])
290286
self.assertTrue('Last Call Request has been submitted' in ''.join(wrap(unicode(outbox[-1]),2**16)))
291287

ietf/doc/utils.py

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,16 @@
55
import datetime
66

77
from django.conf import settings
8-
from django.db.models import Q
98
from django.db.models.query import EmptyQuerySet
109
from django.forms import ValidationError
1110
from django.utils.html import strip_tags, escape
1211

1312
from ietf.doc.models import Document, DocHistory, State
1413
from ietf.doc.models import DocAlias, RelatedDocument, BallotType, DocReminder
1514
from ietf.doc.models import DocEvent, BallotDocEvent, NewRevisionDocEvent, StateDocEvent
16-
from ietf.doc.models import save_document_in_history, STATUSCHANGE_RELATIONS
15+
from ietf.doc.models import save_document_in_history
1716
from ietf.name.models import DocReminderTypeName, DocRelationshipName
1817
from ietf.group.models import Role
19-
from ietf.person.models import Email
2018
from ietf.ietfauth.utils import has_role
2119
from ietf.utils import draft, markup_txt
2220
from ietf.utils.mail import send_mail
@@ -543,41 +541,9 @@ def check_common_doc_name_rules(name):
543541
raise ValidationError(errors)
544542

545543
def get_initial_notify(doc,extra=None):
546-
# set change state notice to something sensible
544+
# With the mailtoken based changes, a document's notify should start empty
547545
receivers = []
548546

549-
if doc.type.slug=='draft':
550-
if doc.group.type_id in ("individ", "area"):
551-
for a in doc.authors.all():
552-
receivers.append(a.address)
553-
else:
554-
receivers.append("%s-chairs@%s" % (doc.group.acronym, settings.DRAFT_ALIAS_DOMAIN))
555-
for editor in Email.objects.filter(role__name="editor", role__group=doc.group):
556-
receivers.append(editor.address)
557-
558-
receivers.append("%s@%s" % (doc.name, settings.DRAFT_ALIAS_DOMAIN))
559-
receivers.append("%s.ad@%s" % (doc.name, settings.DRAFT_ALIAS_DOMAIN))
560-
receivers.append("%s.shepherd@%s" % (doc.name, settings.DRAFT_ALIAS_DOMAIN))
561-
562-
elif doc.type.slug=='charter':
563-
receivers.extend([role.person.formatted_email() for role in doc.group.role_set.filter(name__slug__in=['ad','chair','secr','techadv'])])
564-
565-
else:
566-
pass
567-
568-
for relation in doc.relateddocument_set.filter(Q(relationship='conflrev')|Q(relationship__in=STATUSCHANGE_RELATIONS)):
569-
if relation.relationship.slug=='conflrev':
570-
doc_to_review = relation.target.document
571-
receivers.extend([x.person.formatted_email() for x in Role.objects.filter(group__acronym=doc_to_review.stream.slug,name='chair')])
572-
receivers.append("%s@%s" % (doc_to_review.name, settings.DRAFT_ALIAS_DOMAIN))
573-
elif relation.relationship.slug in STATUSCHANGE_RELATIONS:
574-
affected_doc = relation.target.document
575-
if affected_doc.notify:
576-
receivers.extend(affected_doc.notify.split(','))
577-
578-
if doc.shepherd:
579-
receivers.append(doc.shepherd.email_address())
580-
581547
if extra:
582548
if isinstance(extra,basestring):
583549
extra = extra.split(', ')

ietf/doc/utils_charter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ def default_action_text(group, charter, by):
127127
techadv=group.role_set.filter(name="techadv"),
128128
milestones=group.groupmilestone_set.filter(state="charter"),
129129
action_type=action,
130-
to=", ".join(gather_addresses('ballot_approved_charter',doc=charter,group=group)),
131-
cc=", ".join(gather_addresses('ballot_approved_charter_cc',doc=charter,group=group)),
130+
to=",\n ".join(gather_addresses('ballot_approved_charter',doc=charter,group=group)),
131+
cc=",\n ".join(gather_addresses('ballot_approved_charter_cc',doc=charter,group=group)),
132132
))
133133

134134
e.save()

ietf/doc/views_status_change.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,8 @@ def default_approval_text(status_change,relateddoc):
299299
approved_text = current_text,
300300
action=action,
301301
newstatus=newstatus(relateddoc),
302-
to=", ".join(gather_addresses('ballot_approved_status_change',doc=status_change)),
303-
cc=", ".join(gather_addresses('ballot_approved_status_change_cc',doc=status_change)),
302+
to=",\n ".join(gather_addresses('ballot_approved_status_change',doc=status_change)),
303+
cc=",\n ".join(gather_addresses('ballot_approved_status_change_cc',doc=status_change)),
304304
)
305305
)
306306

ietf/mailtoken/migrations/0002_auto_20150809_1314.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,31 @@ def mt_factory(slug,desc,recipient_slugs):
194194
'doc_affecteddoc_notify',
195195
])
196196

197+
mt_factory(slug='last_call_requested',
198+
desc='Recipients when AD requests a last call',
199+
recipient_slugs=['iesg_secretary',])
200+
201+
mt_factory(slug='last_call_requested_cc',
202+
desc='Copied when AD requests a last call',
203+
recipient_slugs=['doc_ad',
204+
'doc_shepherd',
205+
'doc_notify'])
206+
207+
mt_factory(slug='last_call_issued',
208+
desc='Recipients when a last call is issued',
209+
recipient_slugs=['ietf_announce',])
210+
211+
mt_factory(slug='last_call_issued_cc',
212+
desc='Copied when a last call is issued',
213+
recipient_slugs=['doc_ad',
214+
'doc_shepherd',
215+
'doc_authors',
216+
'doc_notify',
217+
'doc_group_list_email',
218+
'doc_group_chairs',
219+
'doc_affecteddoc_authors',
220+
'doc_affecteddoc_group_chairs',
221+
'doc_affecteddoc_notify'])
197222

198223
def forward(apps, schema_editor):
199224

ietf/templates/doc/mail/last_call_announcement.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% load ietf_filters %}{% load mail_filters %}{% autoescape off %}From: The IESG <iesg-secretary@ietf.org>
2-
To: IETF-Announce <ietf-announce@ietf.org>{% if cc %}
2+
To: {{ to }}{% if cc %}
33
CC: {{ cc }}{% endif %}
44
Reply-To: ietf@ietf.org
55
Sender: <iesg-secretary@ietf.org>

0 commit comments

Comments
 (0)