Skip to content

Commit 3200512

Browse files
committed
Merged in [8271] and [8292] from rjsparks@nostrum.com:
Send email when a the telechat date (or returning item bit) changes for a document. Fixes ietf-tools#1452 - Legacy-Id: 8383 Note: SVN reference [8271] has been migrated to Git commit 80fc0c7 Note: SVN reference [8292] has been migrated to Git commit 7c56f8b
1 parent 25423f6 commit 3200512

5 files changed

Lines changed: 38 additions & 4 deletions

File tree

ietf/doc/mails.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,3 +483,4 @@ def email_stream_tags_changed(request, doc, added_tags, removed_tags, by, commen
483483
removed=removed_tags,
484484
by=by,
485485
comment=comment))
486+

ietf/doc/tests_ballot.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -480,8 +480,9 @@ def helper_test_defer(self,name):
480480
if doc.type_id in defer_states:
481481
self.assertEqual(doc.get_state(defer_states[doc.type_id][0]).slug,defer_states[doc.type_id][1])
482482
self.assertTrue(doc.active_defer_event())
483-
self.assertEqual(len(outbox), mailbox_before + 2)
484-
self.assertTrue("State Update" in outbox[-2]['Subject'])
483+
self.assertEqual(len(outbox), mailbox_before + 3)
484+
self.assertTrue("State Update" in outbox[-3]['Subject'])
485+
self.assertTrue("Telechat update" in outbox[-2]['Subject'])
485486
self.assertTrue("Deferred" in outbox[-1]['Subject'])
486487
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])
487488

@@ -534,7 +535,8 @@ def helper_test_undefer(self,name):
534535
if doc.type_id in undefer_states:
535536
self.assertEqual(doc.get_state(undefer_states[doc.type_id][0]).slug,undefer_states[doc.type_id][1])
536537
self.assertFalse(doc.active_defer_event())
537-
self.assertEqual(len(outbox), mailbox_before + 2)
538+
self.assertEqual(len(outbox), mailbox_before + 3)
539+
self.assertTrue("Telechat update" in outbox[-3]['Subject'])
538540
self.assertTrue("State Update" in outbox[-2]['Subject'])
539541
self.assertTrue("Undeferred" in outbox[-1]['Subject'])
540542
self.assertTrue(doc.file_tag() in outbox[-1]['Subject'])

ietf/doc/tests_draft.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ def test_edit_telechat_date(self):
232232
data = dict(intended_std_level=str(draft.intended_std_level_id),
233233
stream=draft.stream_id,
234234
ad=str(draft.ad_id),
235-
notify="test@example.com",
235+
notify=draft.notify,
236236
note="",
237237
)
238238

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

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

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

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

279285
# remove from agenda
286+
mailbox_before=len(outbox)
280287
data["telechat_date"] = ""
281288
r = self.client.post(url, data)
282289
self.assertEqual(r.status_code, 302)
283290

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

287296
def test_start_iesg_process_on_draft(self):
288297
make_test_data()

ietf/doc/utils.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.conf import settings
88
from django.db.models.query import EmptyQuerySet
99
from django.forms import ValidationError
10+
from django.utils.html import strip_tags
1011

1112
from ietf.utils import markup_txt
1213
from ietf.doc.models import Document, DocHistory
@@ -16,6 +17,23 @@
1617
from ietf.group.models import Role
1718
from ietf.ietfauth.utils import has_role
1819
from ietf.utils import draft
20+
from ietf.utils.mail import send_mail
21+
22+
#FIXME - it would be better if this lived in ietf/doc/mails.py, but there's
23+
# an import order issue to work out.
24+
def email_update_telechat(request, doc, text):
25+
to = set(['iesg@ietf.org','iesg-secretary@ietf.org'])
26+
to.update(set([x.strip() for x in doc.notify.replace(';', ',').split(',')]))
27+
28+
if not to:
29+
return
30+
31+
text = strip_tags(text)
32+
send_mail(request, list(to), None,
33+
"Telechat update notice: %s" % doc.file_tag(),
34+
"doc/mail/update_telechat.txt",
35+
dict(text=text,
36+
url=settings.IDTRACKER_BASE_URL + doc.get_absolute_url()))
1937

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

370388
e.save()
389+
email_update_telechat(request, doc, e.desc)
371390

372391
def rebuild_reference_relations(doc,filename=None):
373392
if doc.type.slug != 'draft':
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% autoescape off %}{{ text }}
2+
ID Tracker URL: {{ url }}
3+
{% endautoescape %}

0 commit comments

Comments
 (0)