Skip to content

Commit f30f5c3

Browse files
committed
checkpoint
- Legacy-Id: 10017
1 parent 839d0f8 commit f30f5c3

12 files changed

Lines changed: 55 additions & 57 deletions

File tree

ietf/doc/mails.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
from ietf.doc.models import Document
1717
from ietf.mailtoken.utils import gather_addresses, gather_address_list
1818

19-
def email_state_changed(request, doc, text):
20-
to = [x.strip() for x in doc.notify.replace(';', ',').split(',')]
19+
def email_state_changed(request, doc, text, mailtoken_id=None):
20+
to = gather_address_list(mailtoken_id or 'doc_state_edited',doc=doc)
2121
if not to:
2222
return
2323

ietf/doc/tests_ballot.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ def test_request_last_call(self):
232232
send_last_call_request="1"))
233233
draft = Document.objects.get(name=draft.name)
234234
self.assertEqual(draft.get_state_slug("draft-iesg"), "lc-req")
235-
self.assertEqual(len(outbox), mailbox_before + 2)
235+
self.assertEqual(len(outbox), mailbox_before + 1)
236236
self.assertTrue("Last Call" in outbox[-1]['Subject'])
237237
self.assertTrue(draft.name in outbox[-1]['Subject'])
238238

@@ -387,7 +387,7 @@ def test_approve_ballot(self):
387387

388388
draft = Document.objects.get(name=draft.name)
389389
self.assertEqual(draft.get_state_slug("draft-iesg"), "ann")
390-
self.assertEqual(len(outbox), mailbox_before + 3)
390+
self.assertEqual(len(outbox), mailbox_before + 2)
391391
self.assertTrue("Protocol Action" in outbox[-2]['Subject'])
392392
# the IANA copy
393393
self.assertTrue("Protocol Action" in outbox[-1]['Subject'])
@@ -409,7 +409,7 @@ def test_disapprove_ballot(self):
409409

410410
draft = Document.objects.get(name=draft.name)
411411
self.assertEqual(draft.get_state_slug("draft-iesg"), "dead")
412-
self.assertEqual(len(outbox), mailbox_before + 2)
412+
self.assertEqual(len(outbox), mailbox_before + 1)
413413
self.assertTrue("NOT be published" in str(outbox[-1]))
414414

415415

@@ -441,11 +441,10 @@ def test_make_last_call(self):
441441
draft = Document.objects.get(name=draft.name)
442442
self.assertEqual(draft.get_state_slug("draft-iesg"), "lc")
443443
self.assertEqual(draft.latest_event(LastCallDocEvent, "sent_last_call").expires.strftime("%Y-%m-%d"), expire_date)
444-
self.assertEqual(len(outbox), mailbox_before + 3)
444+
self.assertEqual(len(outbox), mailbox_before + 2)
445445

446-
self.assertTrue("Last Call" in outbox[-3]['Subject'])
447-
# the IANA copy
448446
self.assertTrue("Last Call" in outbox[-2]['Subject'])
447+
self.assertTrue("Last Call" in outbox[-1]['Subject'])
449448
self.assertTrue("Last Call" in draft.message_set.order_by("-time")[0].subject)
450449

451450
class DeferUndeferTestCase(TestCase):
@@ -491,8 +490,8 @@ def helper_test_defer(self,name):
491490
if doc.type_id in defer_states:
492491
self.assertEqual(doc.get_state(defer_states[doc.type_id][0]).slug,defer_states[doc.type_id][1])
493492
self.assertTrue(doc.active_defer_event())
494-
self.assertEqual(len(outbox), mailbox_before + 3)
495-
self.assertTrue("State Update" in outbox[-3]['Subject'])
493+
self.assertEqual(len(outbox), mailbox_before + 2)
494+
#self.assertTrue("State Update" in outbox[-3]['Subject'])
496495
self.assertTrue("Telechat update" in outbox[-2]['Subject'])
497496
self.assertTrue("Deferred" in outbox[-1]['Subject'])
498497
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])
@@ -546,9 +545,8 @@ def helper_test_undefer(self,name):
546545
if doc.type_id in undefer_states:
547546
self.assertEqual(doc.get_state(undefer_states[doc.type_id][0]).slug,undefer_states[doc.type_id][1])
548547
self.assertFalse(doc.active_defer_event())
549-
self.assertEqual(len(outbox), mailbox_before + 3)
550-
self.assertTrue("Telechat update" in outbox[-3]['Subject'])
551-
self.assertTrue("State Update" in outbox[-2]['Subject'])
548+
self.assertEqual(len(outbox), mailbox_before + 2)
549+
self.assertTrue("Telechat update" in outbox[-2]['Subject'])
552550
self.assertTrue("Undeferred" in outbox[-1]['Subject'])
553551
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])
554552

ietf/doc/tests_charter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ def find_event(t):
9696
if slug in ("intrev", "iesgrev"):
9797
self.assertTrue(find_event("created_ballot"))
9898

99-
self.assertEqual(len(outbox), mailbox_before + 1)
100-
self.assertTrue("state changed" in outbox[-1]['Subject'].lower())
99+
self.assertEqual(len(outbox), mailbox_before + 2)
100+
self.assertTrue("state changed" in outbox[-2]['Subject'].lower())
101101

102102
def test_edit_telechat_date(self):
103103
make_test_data()

ietf/doc/utils_charter.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import re, datetime, os
22

33
from django.template.loader import render_to_string
4-
from django.utils.html import strip_tags
54
from django.conf import settings
65

76
from ietf.doc.models import NewRevisionDocEvent, WriteupDocEvent, BallotPositionDocEvent
87
from ietf.person.models import Person
98
from ietf.utils.history import find_history_active_at
10-
from ietf.utils.mail import send_mail_text
119
from ietf.mailtoken.utils import gather_addresses
1210

1311
def charter_name_for_group(group):
@@ -84,19 +82,6 @@ def historic_milestones_for_charter(charter, rev):
8482

8583
return res
8684

87-
def email_state_changed(request, doc, text):
88-
to = [e.strip() for e in doc.notify.replace(';', ',').split(',')]
89-
if not to:
90-
return
91-
92-
text = strip_tags(text)
93-
text += "\n\n"
94-
text += "URL: %s" % (settings.IDTRACKER_BASE_URL + doc.get_absolute_url())
95-
96-
send_mail_text(request, to, None,
97-
"State changed: %s-%s" % (doc.canonical_name(), doc.rev),
98-
text)
99-
10085
def generate_ballot_writeup(request, doc):
10186
e = WriteupDocEvent()
10287
e.type = "changed_ballot_writeup_text"

ietf/doc/views_ballot.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from ietf.doc.utils import ( add_state_change_event, close_ballot, close_open_ballots,
1919
create_ballot_if_not_open, update_telechat )
2020
from ietf.doc.mails import ( email_ballot_deferred, email_ballot_undeferred,
21-
email_state_changed, extra_automation_headers, generate_last_call_announcement,
21+
extra_automation_headers, generate_last_call_announcement,
2222
generate_issue_ballot_mail, generate_ballot_writeup, generate_approval_mail )
2323
from ietf.doc.lastcall import request_last_call
2424
from ietf.iesg.models import TelechatDate
@@ -69,8 +69,6 @@ def do_undefer_ballot(request, doc):
6969
doc.save()
7070

7171
update_telechat(request, doc, login, telechat_date)
72-
if e:
73-
email_state_changed(request, doc, e.desc)
7472
email_ballot_undeferred(request, doc, login.plain_name(), telechat_date)
7573

7674
def position_to_ballot_choice(position):
@@ -367,9 +365,6 @@ def defer_ballot(request, name):
367365
doc.time = (e and e.time) or datetime.datetime.now()
368366
doc.save()
369367

370-
if e:
371-
email_state_changed(request, doc, e.desc)
372-
373368
update_telechat(request, doc, login, telechat_date)
374369
email_ballot_deferred(request, doc, login.plain_name(), telechat_date)
375370

@@ -462,9 +457,6 @@ def lastcalltext(request, name):
462457
doc.time = (e and e.time) or datetime.datetime.now()
463458
doc.save()
464459

465-
if e:
466-
email_state_changed(request, doc, e.desc)
467-
468460
request_last_call(request, doc)
469461

470462
return render_to_response('doc/draft/last_call_requested.html',
@@ -699,15 +691,11 @@ def approve_ballot(request, name):
699691

700692
e.save()
701693

702-
change_description = e.desc + " and state has been changed to %s" % doc.get_state("draft-iesg").name
703-
704694
e = add_state_change_event(doc, login, prev_state, new_state, prev_tags=prev_tags, new_tags=[])
705695

706696
doc.time = (e and e.time) or datetime.datetime.now()
707697
doc.save()
708698

709-
email_state_changed(request, doc, change_description)
710-
711699
# send announcement
712700

713701
send_mail_preformatted(request, announcement)
@@ -785,10 +773,6 @@ def make_last_call(request, name):
785773
doc.time = (e and e.time) or datetime.datetime.now()
786774
doc.save()
787775

788-
change_description = "Last call has been made for %s and state has been changed to %s" % (doc.name, new_state.name)
789-
790-
email_state_changed(request, doc, change_description)
791-
792776
e = LastCallDocEvent(doc=doc, by=login)
793777
e.type = "sent_last_call"
794778
e.desc = "The following Last Call announcement was sent out:<br><br>"

ietf/doc/views_charter.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818
from ietf.doc.utils import ( add_state_change_event, close_open_ballots,
1919
create_ballot_if_not_open, get_chartering_type )
2020
from ietf.doc.utils_charter import ( historic_milestones_for_charter,
21-
approved_revision, default_review_text, default_action_text, email_state_changed,
21+
approved_revision, default_review_text, default_action_text,
2222
generate_ballot_writeup, generate_issue_ballot_mail, next_approved_revision, next_revision )
23+
from ietf.doc.mails import email_state_changed
2324
from ietf.group.models import ChangeStateGroupEvent, MilestoneGroupEvent
2425
from ietf.group.utils import save_group_in_history, save_milestone_in_history, can_manage_group_type
2526
from ietf.ietfauth.utils import has_role, role_required
@@ -142,7 +143,8 @@ def change_state(request, name, option=None):
142143
if message or charter_state.slug == "intrev" or charter_state.slug == "extrev":
143144
email_iesg_secretary_re_charter(request, group, "Charter state changed to %s" % charter_state.name, message)
144145

145-
email_state_changed(request, charter, "State changed to %s." % charter_state)
146+
# TODO - do we need a seperate set of recipients for state changes to charters vrs other kind of documents
147+
email_state_changed(request, charter, "State changed to %s." % charter_state, 'doc_state_edited')
146148

147149
if charter_state.slug == "intrev" and group.type_id == "wg":
148150
if request.POST.get("ballot_wo_extern"):
@@ -266,7 +268,7 @@ def change_title(request, name, option=None):
266268
charter.save()
267269
if message:
268270
email_iesg_secretary_re_charter(request, group, "Charter title changed to %s" % new_title, message)
269-
email_state_changed(request, charter, "Title changed to %s." % new_title)
271+
email_state_changed(request, charter, "Title changed to %s." % new_title,'doc_state_edited')
270272
return redirect('doc_view', name=charter.name)
271273
else:
272274
form = ChangeTitleForm(charter=charter)

ietf/doc/views_draft.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def change_state(request, name):
110110
doc.time = e.time
111111
doc.save()
112112

113-
email_state_changed(request, doc, msg)
113+
email_state_changed(request, doc, msg,'doc_state_edited')
114114

115115

116116
if prev_state and prev_state.slug in ("ann", "rfcqueue") and new_state.slug not in ("rfcqueue", "pub"):

ietf/mailtoken/migrations/0002_auto_20150809_1314.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,19 @@ def mt_factory(slug,desc,recipient_slugs):
328328
])
329329

330330
mt_factory(slug='doc_state_edited',
331-
desc="Recipients when a document's state is manutally edited",
331+
desc="Recipients when a document's state is manually edited",
332+
recipient_slugs=['doc_notify',
333+
'doc_ad',
334+
'doc_authors',
335+
'doc_shepherd',
336+
'doc_group_chairs',
337+
'doc_affecteddoc_authors',
338+
'doc_affecteddoc_group_chairs',
339+
'doc_affecteddoc_notify',
340+
])
341+
342+
mt_factory(slug='doc_iana_state_changed',
343+
desc="Recipients when IANA state information for a document changes ",
332344
recipient_slugs=['doc_notify',
333345
'doc_ad',
334346
'doc_authors',

ietf/mailtoken/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ def gather_doc_affecteddoc_notify(self, **kwargs):
8585
addrs.extend(Recipient.objects.get(slug='doc_notify').gather(**{'doc':reldoc.document}))
8686
return addrs
8787

88-
def gather_conflict_review_stream_owner(self, **kwargs):
88+
def gather_conflict_review_stream_manager(self, **kwargs):
8989
addrs = []
9090
if 'doc' in kwargs:
9191
for reldoc in kwargs['doc'].related_that_doc(['conflrev']):
92-
addrs.extend(Recipient.objects.get(slug='doc_stream_owner').gather(**{'doc':reldoc.document}))
92+
addrs.extend(Recipient.objects.get(slug='doc_stream_manager').gather(**{'doc':reldoc.document}))
9393
return addrs
9494

9595
def gather_conflict_review_steering_group(self,**kwargs):

ietf/name/fixtures/names.json

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4757,7 +4757,24 @@
47574757
"doc_notify",
47584758
"doc_shepherd"
47594759
],
4760-
"desc": "Recipients when a document's state is manutally edited"
4760+
"desc": "Recipients when IANA state information for a document changes "
4761+
},
4762+
"model": "mailtoken.mailtoken",
4763+
"pk": "doc_iana_state_changed"
4764+
},
4765+
{
4766+
"fields": {
4767+
"recipients": [
4768+
"doc_ad",
4769+
"doc_affecteddoc_authors",
4770+
"doc_affecteddoc_group_chairs",
4771+
"doc_affecteddoc_notify",
4772+
"doc_authors",
4773+
"doc_group_chairs",
4774+
"doc_notify",
4775+
"doc_shepherd"
4776+
],
4777+
"desc": "Recipients when a document's state is manually edited"
47614778
},
47624779
"model": "mailtoken.mailtoken",
47634780
"pk": "doc_state_edited"

0 commit comments

Comments
 (0)