Skip to content

Commit 95b1445

Browse files
committed
Email the WG too when making changes to milestones, although filter
out any "Adding milestone for review" changes - Legacy-Id: 4593
1 parent 6050cbf commit 95b1445

3 files changed

Lines changed: 26 additions & 11 deletions

File tree

ietf/wginfo/mails.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# generation of mails
22

3-
import textwrap, datetime
3+
import textwrap, datetime, re
44

55
from django.template.loader import render_to_string
66
from django.utils.html import strip_tags
@@ -12,21 +12,33 @@
1212

1313
from ietf.group.models import *
1414

15-
def email_milestones_changed(request, group, text):
15+
def email_milestones_changed(request, group, changes):
16+
def wrap_up_email(to, text):
17+
text = wrap(strip_tags(text), 70)
18+
text += "\n\n"
19+
text += u"URL: %s" % (settings.IDTRACKER_BASE_URL + urlreverse("wg_charter", kwargs=dict(acronym=group.acronym)))
20+
21+
send_mail_text(request, to, None,
22+
u"Milestones changed for %s %s" % (group.acronym, group.type.name),
23+
text)
24+
25+
# first send to AD and chairs
1626
to = []
1727
if group.ad:
1828
to.append(group.ad.role_email("ad").formatted_email())
1929

2030
for r in group.role_set.filter(name="chair"):
2131
to.append(r.formatted_email())
2232

23-
text = wrap(strip_tags(text), 70)
24-
text += "\n\n"
25-
text += u"URL: %s" % (settings.IDTRACKER_BASE_URL + urlreverse("wg_charter", kwargs=dict(acronym=group.acronym)))
33+
if to:
34+
wrap_up_email(to, u"\n\n".join(c + "." for c in changes))
35+
36+
# then send to WG
37+
if group.list_email:
38+
review_re = re.compile("Added .* for review, due")
39+
to = [ group.list_email ]
40+
wrap_up_email(to, u"\n\n".join(c + "." for c in changes if not review_re.match(c)))
2641

27-
send_mail_text(request, to, None,
28-
u"Milestones changed for %s %s" % (group.acronym, group.type.name),
29-
text)
3042

3143
def email_milestone_review_reminder(group, grace_period=7):
3244
"""Email reminders about milestones needing review to AD."""

ietf/wginfo/milestones.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ def save_milestone_form(f):
280280
changes.append(change)
281281

282282
if milestone_set == "current":
283-
email_milestones_changed(request, group, u"\n\n".join(c + "." for c in changes))
283+
email_milestones_changed(request, group, changes)
284284

285285
if milestone_set == "charter":
286286
return redirect('doc_view', name=group.charter.canonical_name())

ietf/wginfo/tests.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ def test_edit_milestone(self):
462462
self.assertEquals(GroupMilestone.objects.count(), milestones_before)
463463
self.assertEquals(m.due, m1.due)
464464

465-
# add
465+
# edit
466466
mailbox_before = len(outbox)
467467
r = self.client.post(url, { 'prefix': "m1",
468468
'm1-id': m1.id,
@@ -483,8 +483,11 @@ def test_edit_milestone(self):
483483
self.assertEquals(m.resolved, "Done")
484484
self.assertEquals(set(m.docs.values_list("name", flat=True)), set(docs))
485485
self.assertTrue("Changed milestone" in m.milestonegroupevent_set.all()[0].desc)
486-
self.assertEquals(len(outbox), mailbox_before + 1)
486+
self.assertEquals(len(outbox), mailbox_before + 2)
487+
self.assertTrue("Milestones changed" in outbox[-2]["Subject"])
488+
self.assertTrue(group.ad.role_email("ad").address in str(outbox[-2]))
487489
self.assertTrue("Milestones changed" in outbox[-1]["Subject"])
490+
self.assertTrue(group.list_email in str(outbox[-1]))
488491

489492
def test_reset_charter_milestones(self):
490493
m1, m2, group = self.create_test_milestones()

0 commit comments

Comments
 (0)