From 134ae9928f9f879ac52db3d3d53330cdaa94c7e4 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 26 Nov 2014 18:56:51 +0000 Subject: [PATCH] Highlight need for milestone review and approval in messages to leadership when a milestone edit requires approval. Don't bother the group when the only changes are those needing approval. Fixes ticket #1501. Commit ready for merge. - Legacy-Id: 8716 --- ietf/group/mails.py | 13 +++++++++---- ietf/group/tests_info.py | 7 +++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ietf/group/mails.py b/ietf/group/mails.py index c56a179f2..63655112f 100644 --- a/ietf/group/mails.py +++ b/ietf/group/mails.py @@ -34,13 +34,16 @@ def email_iesg_secretary_personnel_change(request, group, text): def email_milestones_changed(request, group, changes): def wrap_up_email(to, text): + + subject = u"Milestones changed for %s %s" % (group.acronym, group.type.name) + if re.search("Added .* for review, due",text): + subject = u"Review Required - " + subject + text = wrap(strip_tags(text), 70) text += "\n\n" text += u"URL: %s" % (settings.IDTRACKER_BASE_URL + group.about_url()) - send_mail_text(request, to, None, - u"Milestones changed for %s %s" % (group.acronym, group.type.name), - text) + send_mail_text(request, to, None, subject, text) # first send to management and chairs to = [] @@ -59,7 +62,9 @@ def email_milestones_changed(request, group, changes): 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))) + msg = u"\n\n".join(c + "." for c in changes if not review_re.match(c)) + if msg: + wrap_up_email(to, msg) def email_milestone_review_reminder(group, grace_period=7): diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 802eb6442..dad5e6b51 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -542,6 +542,7 @@ class MilestoneTests(TestCase): self.assertEqual(GroupMilestone.objects.count(), milestones_before) # add + mailbox_before = len(outbox) r = self.client.post(url, { 'prefix': "m-1", 'm-1-id': "-1", 'm-1-desc': "Test 3", @@ -561,6 +562,8 @@ class MilestoneTests(TestCase): self.assertEqual(m.resolved, "") self.assertEqual(set(m.docs.values_list("name", flat=True)), set(docs)) self.assertTrue("Added milestone" in m.milestonegroupevent_set.all()[0].desc) + self.assertEqual(len(outbox),mailbox_before+2) + self.assertFalse(any('Review Required' in x['Subject'] for x in outbox[-2:])) def test_add_milestone_as_chair(self): m1, m2, group = self.create_test_milestones() @@ -577,6 +580,7 @@ class MilestoneTests(TestCase): due = self.last_day_of_month(datetime.date.today() + datetime.timedelta(days=365)) # add + mailbox_before = len(outbox) r = self.client.post(url, { 'prefix': "m-1", 'm-1-id': -1, 'm-1-desc': "Test 3", @@ -593,6 +597,9 @@ class MilestoneTests(TestCase): self.assertEqual(m.state_id, "review") self.assertEqual(group.groupevent_set.count(), events_before + 1) self.assertTrue("for review" in m.milestonegroupevent_set.all()[0].desc) + self.assertEqual(len(outbox),mailbox_before+1) + self.assertTrue('Review Required' in outbox[-1]['Subject']) + self.assertFalse(group.list_email in outbox[-1]['To']) def test_accept_milestone(self): m1, m2, group = self.create_test_milestones()