Merged in [8716] from rjsparks@nostrum.com:

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.
 - Legacy-Id: 8865
Note: SVN reference [8716] has been migrated to Git commit 134ae9928f
This commit is contained in:
Henrik Levkowetz 2015-01-15 19:21:56 +00:00
commit 0316c33c4b
2 changed files with 16 additions and 4 deletions

View file

@ -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):

View file

@ -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()