Skip to content

Commit 629816a

Browse files
Refactoring the mails sent when state is changed along with annotation tags. Currently there are two emails getting sent. Fixing it to send only one email that rolls up the annotation tag changes into the state change email.
- Legacy-Id: 6640
1 parent 74c7230 commit 629816a

3 files changed

Lines changed: 26 additions & 12 deletions

File tree

ietf/ietfworkflows/forms.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ def get_states(self):
250250

251251
return [(i.pk, i.name) for i in self.workflow.get_states()]
252252

253-
def save_tags(self):
253+
def save_tags(self,send_email=True):
254254
comment = self.cleaned_data.get('comment')
255255
new_tags = self.cleaned_data.get('tags')
256256

@@ -275,7 +275,8 @@ def save_tags(self):
275275
person=self.person,
276276
set_tags=set_tags,
277277
reset_tags=reset_tags,
278-
extra_notify=extra_notify)
278+
extra_notify=extra_notify,
279+
send_email=send_email)
279280

280281
def save_state(self):
281282
comment = self.cleaned_data.get('comment')
@@ -285,8 +286,15 @@ def save_state(self):
285286

286287
old_state = self.draft.get_state("draft-stream-%s" % self.draft.stream_id)
287288
if state==old_state:
289+
self.save_tags()
288290
return
289291

292+
self.save_tags(False)
293+
new_tags = self.cleaned_data.get('tags')
294+
295+
set_tags = [tag for tag in self.available_tags if str(tag.pk) in new_tags and tag not in self.tags]
296+
reset_tags = [tag for tag in self.available_tags if str(tag.pk) not in new_tags and tag in self.tags]
297+
290298
weeks = self.cleaned_data.get('weeks')
291299
estimated_date = None
292300
if weeks:
@@ -297,12 +305,12 @@ def save_state(self):
297305
comment=comment,
298306
person=self.person,
299307
to_state=state,
300-
estimated_date=estimated_date)
308+
estimated_date=estimated_date,
309+
added_tags=set_tags,
310+
removed_tags=reset_tags)
301311

302312
def save(self):
303-
self.save_tags()
304-
if 'only_tags' not in self.data.keys():
305-
self.save_state()
313+
self.save_state()
306314

307315
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
308316
comment = self.cleaned_data.get('comment').strip()

ietf/ietfworkflows/utils.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ def get_pubreq_cc_receivers(doc):
278278

279279
return res
280280

281-
def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra_notify=[]):
281+
def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra_notify=[], send_email=True):
282282
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
283283
doc = Document.objects.get(pk=obj.pk)
284284
save_document_in_history(doc)
@@ -297,8 +297,9 @@ def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra
297297
e.desc = " ".join(l)
298298
e.save()
299299

300-
receivers = get_notification_receivers(doc, extra_notify)
301-
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
300+
if send_email:
301+
receivers = get_notification_receivers(doc, extra_notify)
302+
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
302303
u"Annotations tags changed for draft %s" % doc.name,
303304
'ietfworkflows/annotation_tags_updated_mail.txt',
304305
dict(doc=doc,
@@ -337,7 +338,7 @@ def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra
337338
notify_tag_entry(entry, extra_notify)
338339

339340

340-
def update_state(request, doc, comment, person, to_state, estimated_date=None, extra_notify=[]):
341+
def update_state(request, doc, comment, person, to_state, added_tags, removed_tags, estimated_date=None, extra_notify=[]):
341342
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
342343
doc = Document.objects.get(pk=doc.pk)
343344
save_document_in_history(doc)
@@ -370,6 +371,8 @@ def update_state(request, doc, comment, person, to_state, estimated_date=None, e
370371
reminder.active = False
371372
reminder.save()
372373

374+
set_tags=", ".join(x.name for x in added_tags)
375+
reset_tags=", ".join(x.name for x in removed_tags)
373376
receivers = get_notification_receivers(doc, extra_notify)
374377
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
375378
u"State changed for draft %s" % doc.name,
@@ -379,7 +382,9 @@ def update_state(request, doc, comment, person, to_state, estimated_date=None, e
379382
to_state=to_state,
380383
transition_date=doc.time,
381384
person=person,
382-
comment=comment)))
385+
comment=comment,
386+
set_tags=set_tags,
387+
reset_tags=reset_tags)))
383388

384389
if (to_state.slug=='sub-pub'):
385390
receivers = get_pubreq_receivers(doc, extra_notify)

ietf/templates/ietfworkflows/state_updated_mail.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Previous state: {{ entry.from_state }}
55
Current state: {{ entry.to_state }}
66
Transition date: {{ entry.transition_date }}
77
Author of the change: {{ entry.person }}
8-
8+
{% if entry.set_tags %}Annotation tags set: {{ entry.set_tags }}{% endif %}
9+
{% if entry.reset_tags %}Annotation tags reset: {{ entry.reset_tags }}{% endif %}
910
Comment:
1011
{{ entry.comment }}
1112
{% endautoescape %}

0 commit comments

Comments
 (0)