Skip to content

Commit

Permalink
Send email when a the telechat date (or returning item bit) changes f…
Browse files Browse the repository at this point in the history
…or a document.

Fixes #1452
Commit ready for merge.
 - Legacy-Id: 8271
  • Loading branch information
rjsparks committed Aug 16, 2014
1 parent 35a7436 commit 80fc0c7
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 4 deletions.
1 change: 1 addition & 0 deletions ietf/doc/mails.py
Expand Up @@ -483,3 +483,4 @@ def email_stream_tags_changed(request, doc, added_tags, removed_tags, by, commen
removed=removed_tags,
by=by,
comment=comment))

8 changes: 5 additions & 3 deletions ietf/doc/tests_ballot.py
Expand Up @@ -480,8 +480,9 @@ def helper_test_defer(self,name):
if doc.type_id in defer_states:
self.assertEqual(doc.get_state(defer_states[doc.type_id][0]).slug,defer_states[doc.type_id][1])
self.assertTrue(doc.active_defer_event())
self.assertEqual(len(outbox), mailbox_before + 2)
self.assertTrue("State Update" in outbox[-2]['Subject'])
self.assertEqual(len(outbox), mailbox_before + 3)
self.assertTrue("State Update" in outbox[-3]['Subject'])
self.assertTrue("Telechat update" in outbox[-2]['Subject'])
self.assertTrue("Deferred" in outbox[-1]['Subject'])
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])

Expand Down Expand Up @@ -534,7 +535,8 @@ def helper_test_undefer(self,name):
if doc.type_id in undefer_states:
self.assertEqual(doc.get_state(undefer_states[doc.type_id][0]).slug,undefer_states[doc.type_id][1])
self.assertFalse(doc.active_defer_event())
self.assertEqual(len(outbox), mailbox_before + 2)
self.assertEqual(len(outbox), mailbox_before + 3)
self.assertTrue("Telechat update" in outbox[-3]['Subject'])
self.assertTrue("State Update" in outbox[-2]['Subject'])
self.assertTrue("Undeferred" in outbox[-1]['Subject'])
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])
Expand Down
11 changes: 10 additions & 1 deletion ietf/doc/tests_draft.py
Expand Up @@ -232,7 +232,7 @@ def test_edit_telechat_date(self):
data = dict(intended_std_level=str(draft.intended_std_level_id),
stream=draft.stream_id,
ad=str(draft.ad_id),
notify="test@example.com",
notify=draft.notify,
note="",
)

Expand All @@ -241,6 +241,7 @@ def test_edit_telechat_date(self):
self.assertEqual(r.status_code, 200)

# add to telechat
mailbox_before=len(outbox)
self.assertTrue(not draft.latest_event(TelechatDocEvent, type="scheduled_for_telechat"))
data["telechat_date"] = TelechatDate.objects.active()[0].date.isoformat()
r = self.client.post(url, data)
Expand All @@ -249,8 +250,11 @@ def test_edit_telechat_date(self):
draft = Document.objects.get(name=draft.name)
self.assertTrue(draft.latest_event(TelechatDocEvent, type="scheduled_for_telechat"))
self.assertEqual(draft.latest_event(TelechatDocEvent, type="scheduled_for_telechat").telechat_date, TelechatDate.objects.active()[0].date)
self.assertEqual(len(outbox),mailbox_before+1)
self.assertTrue("Telechat update" in outbox[-1]['Subject'])

# change telechat
mailbox_before=len(outbox)
data["telechat_date"] = TelechatDate.objects.active()[1].date.isoformat()
r = self.client.post(url, data)
self.assertEqual(r.status_code, 302)
Expand All @@ -259,6 +263,8 @@ def test_edit_telechat_date(self):
telechat_event = draft.latest_event(TelechatDocEvent, type="scheduled_for_telechat")
self.assertEqual(telechat_event.telechat_date, TelechatDate.objects.active()[1].date)
self.assertFalse(telechat_event.returning_item)
self.assertEqual(len(outbox),mailbox_before+1)
self.assertTrue("Telechat update" in outbox[-1]['Subject'])

# change to a telechat that should cause returning item to be auto-detected
# First, make it appear that the previous telechat has already passed
Expand All @@ -277,12 +283,15 @@ def test_edit_telechat_date(self):
self.assertTrue(telechat_event.returning_item)

# remove from agenda
mailbox_before=len(outbox)
data["telechat_date"] = ""
r = self.client.post(url, data)
self.assertEqual(r.status_code, 302)

draft = Document.objects.get(name=draft.name)
self.assertTrue(not draft.latest_event(TelechatDocEvent, type="scheduled_for_telechat").telechat_date)
self.assertEqual(len(outbox),mailbox_before+1)
self.assertTrue("Telechat update" in outbox[-1]['Subject'])

def test_start_iesg_process_on_draft(self):
make_test_data()
Expand Down
19 changes: 19 additions & 0 deletions ietf/doc/utils.py
Expand Up @@ -7,6 +7,7 @@
from django.conf import settings
from django.db.models.query import EmptyQuerySet
from django.forms import ValidationError
from django.utils.html import strip_tags

from ietf.utils import markup_txt
from ietf.doc.models import Document, DocHistory
Expand All @@ -16,6 +17,23 @@
from ietf.group.models import Role
from ietf.ietfauth.utils import has_role
from ietf.utils import draft
from ietf.utils.mail import send_mail

#FIXME - it would be better if this lived in ietf/doc/mails.py, but there's
# an import order issue to work out.
def email_update_telechat(request, doc, text):
to = set(['iesg@ietf.org','iesg-secretary@ietf.org'])
to.update(set([x.strip() for x in doc.notify.replace(';', ',').split(',')]))

if not to:
return

text = strip_tags(text)
send_mail(request, list(to), None,
"Telechat update notice: %s" % doc.file_tag(),
"doc/mail/update_telechat.txt",
dict(text=text,
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))

def get_state_types(doc):
res = []
Expand Down Expand Up @@ -368,6 +386,7 @@ def update_telechat(request, doc, by, new_telechat_date, new_returning_item=None
e.desc = "Removed telechat returning item indication"

e.save()
email_update_telechat(request, doc, e.desc)

def rebuild_reference_relations(doc,filename=None):
if doc.type.slug != 'draft':
Expand Down

0 comments on commit 80fc0c7

Please sign in to comment.