Email the WG too when making changes to milestones, although filter
out any "Adding milestone for review" changes - Legacy-Id: 4593
This commit is contained in:
parent
6050cbf76a
commit
95b144515e
|
@ -1,6 +1,6 @@
|
|||
# generation of mails
|
||||
|
||||
import textwrap, datetime
|
||||
import textwrap, datetime, re
|
||||
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.html import strip_tags
|
||||
|
@ -12,7 +12,17 @@ from ietf.utils.mail import send_mail, send_mail_text
|
|||
|
||||
from ietf.group.models import *
|
||||
|
||||
def email_milestones_changed(request, group, text):
|
||||
def email_milestones_changed(request, group, changes):
|
||||
def wrap_up_email(to, text):
|
||||
text = wrap(strip_tags(text), 70)
|
||||
text += "\n\n"
|
||||
text += u"URL: %s" % (settings.IDTRACKER_BASE_URL + urlreverse("wg_charter", kwargs=dict(acronym=group.acronym)))
|
||||
|
||||
send_mail_text(request, to, None,
|
||||
u"Milestones changed for %s %s" % (group.acronym, group.type.name),
|
||||
text)
|
||||
|
||||
# first send to AD and chairs
|
||||
to = []
|
||||
if group.ad:
|
||||
to.append(group.ad.role_email("ad").formatted_email())
|
||||
|
@ -20,13 +30,15 @@ def email_milestones_changed(request, group, text):
|
|||
for r in group.role_set.filter(name="chair"):
|
||||
to.append(r.formatted_email())
|
||||
|
||||
text = wrap(strip_tags(text), 70)
|
||||
text += "\n\n"
|
||||
text += u"URL: %s" % (settings.IDTRACKER_BASE_URL + urlreverse("wg_charter", kwargs=dict(acronym=group.acronym)))
|
||||
if to:
|
||||
wrap_up_email(to, u"\n\n".join(c + "." for c in changes))
|
||||
|
||||
# then send to WG
|
||||
if group.list_email:
|
||||
review_re = re.compile("Added .* for review, due")
|
||||
to = [ group.list_email ]
|
||||
wrap_up_email(to, u"\n\n".join(c + "." for c in changes if not review_re.match(c)))
|
||||
|
||||
send_mail_text(request, to, None,
|
||||
u"Milestones changed for %s %s" % (group.acronym, group.type.name),
|
||||
text)
|
||||
|
||||
def email_milestone_review_reminder(group, grace_period=7):
|
||||
"""Email reminders about milestones needing review to AD."""
|
||||
|
|
|
@ -280,7 +280,7 @@ def edit_milestones(request, acronym, milestone_set="current"):
|
|||
changes.append(change)
|
||||
|
||||
if milestone_set == "current":
|
||||
email_milestones_changed(request, group, u"\n\n".join(c + "." for c in changes))
|
||||
email_milestones_changed(request, group, changes)
|
||||
|
||||
if milestone_set == "charter":
|
||||
return redirect('doc_view', name=group.charter.canonical_name())
|
||||
|
|
|
@ -462,7 +462,7 @@ class MilestoneTestCase(django.test.TestCase):
|
|||
self.assertEquals(GroupMilestone.objects.count(), milestones_before)
|
||||
self.assertEquals(m.due, m1.due)
|
||||
|
||||
# add
|
||||
# edit
|
||||
mailbox_before = len(outbox)
|
||||
r = self.client.post(url, { 'prefix': "m1",
|
||||
'm1-id': m1.id,
|
||||
|
@ -483,8 +483,11 @@ class MilestoneTestCase(django.test.TestCase):
|
|||
self.assertEquals(m.resolved, "Done")
|
||||
self.assertEquals(set(m.docs.values_list("name", flat=True)), set(docs))
|
||||
self.assertTrue("Changed milestone" in m.milestonegroupevent_set.all()[0].desc)
|
||||
self.assertEquals(len(outbox), mailbox_before + 1)
|
||||
self.assertEquals(len(outbox), mailbox_before + 2)
|
||||
self.assertTrue("Milestones changed" in outbox[-2]["Subject"])
|
||||
self.assertTrue(group.ad.role_email("ad").address in str(outbox[-2]))
|
||||
self.assertTrue("Milestones changed" in outbox[-1]["Subject"])
|
||||
self.assertTrue(group.list_email in str(outbox[-1]))
|
||||
|
||||
def test_reset_charter_milestones(self):
|
||||
m1, m2, group = self.create_test_milestones()
|
||||
|
|
Loading…
Reference in a new issue