Merged [6626] and [6640] from suresh.krishnan@ericsson.com:

Refactored the mails sent when state is changed along with annotation tags.
Don't send emails for only comment changes, just add a history entry.  For
state changes and annotation changes, only send one email, containing
information about both state changes and annotation tag changes.  
Fixes issue #1127.
 - Legacy-Id: 6660
Note: SVN reference [6626] has been migrated to Git commit 74c7230842

Note: SVN reference [6640] has been migrated to Git commit 629816a2cb
This commit is contained in:
Henrik Levkowetz 2013-11-06 15:53:33 +00:00
commit 8ec6c336a9
3 changed files with 31 additions and 12 deletions

View file

@ -250,7 +250,7 @@ class DraftTagsStateForm(StreamDraftForm):
return [(i.pk, i.name) for i in self.workflow.get_states()]
def save_tags(self):
def save_tags(self,send_email=True):
comment = self.cleaned_data.get('comment')
new_tags = self.cleaned_data.get('tags')
@ -275,13 +275,26 @@ class DraftTagsStateForm(StreamDraftForm):
person=self.person,
set_tags=set_tags,
reset_tags=reset_tags,
extra_notify=extra_notify)
extra_notify=extra_notify,
send_email=send_email)
def save_state(self):
comment = self.cleaned_data.get('comment')
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
from ietf.doc.models import State
state = State.objects.get(pk=self.cleaned_data.get('new_state'))
old_state = self.draft.get_state("draft-stream-%s" % self.draft.stream_id)
if state==old_state:
self.save_tags()
return
self.save_tags(False)
new_tags = self.cleaned_data.get('tags')
set_tags = [tag for tag in self.available_tags if str(tag.pk) in new_tags and tag not in self.tags]
reset_tags = [tag for tag in self.available_tags if str(tag.pk) not in new_tags and tag in self.tags]
weeks = self.cleaned_data.get('weeks')
estimated_date = None
if weeks:
@ -292,12 +305,12 @@ class DraftTagsStateForm(StreamDraftForm):
comment=comment,
person=self.person,
to_state=state,
estimated_date=estimated_date)
estimated_date=estimated_date,
added_tags=set_tags,
removed_tags=reset_tags)
def save(self):
self.save_tags()
if 'only_tags' not in self.data.keys():
self.save_state()
self.save_state()
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
comment = self.cleaned_data.get('comment').strip()

View file

@ -278,7 +278,7 @@ def get_pubreq_cc_receivers(doc):
return res
def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra_notify=[]):
def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra_notify=[], send_email=True):
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
doc = Document.objects.get(pk=obj.pk)
save_document_in_history(doc)
@ -297,8 +297,9 @@ def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra
e.desc = " ".join(l)
e.save()
receivers = get_notification_receivers(doc, extra_notify)
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
if send_email:
receivers = get_notification_receivers(doc, extra_notify)
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
u"Annotations tags changed for draft %s" % doc.name,
'ietfworkflows/annotation_tags_updated_mail.txt',
dict(doc=doc,
@ -337,7 +338,7 @@ def update_tags(request, obj, comment, person, set_tags=[], reset_tags=[], extra
notify_tag_entry(entry, extra_notify)
def update_state(request, doc, comment, person, to_state, estimated_date=None, extra_notify=[]):
def update_state(request, doc, comment, person, to_state, added_tags, removed_tags, estimated_date=None, extra_notify=[]):
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
doc = Document.objects.get(pk=doc.pk)
save_document_in_history(doc)
@ -370,6 +371,8 @@ def update_state(request, doc, comment, person, to_state, estimated_date=None, e
reminder.active = False
reminder.save()
set_tags=", ".join(x.name for x in added_tags)
reset_tags=", ".join(x.name for x in removed_tags)
receivers = get_notification_receivers(doc, extra_notify)
send_mail(request, receivers, settings.DEFAULT_FROM_EMAIL,
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
to_state=to_state,
transition_date=doc.time,
person=person,
comment=comment)))
comment=comment,
set_tags=set_tags,
reset_tags=reset_tags)))
if (to_state.slug=='sub-pub'):
receivers = get_pubreq_receivers(doc, extra_notify)

View file

@ -5,7 +5,8 @@ Previous state: {{ entry.from_state }}
Current state: {{ entry.to_state }}
Transition date: {{ entry.transition_date }}
Author of the change: {{ entry.person }}
{% if entry.set_tags %}Annotation tags set: {{ entry.set_tags }}{% endif %}
{% if entry.reset_tags %}Annotation tags reset: {{ entry.reset_tags }}{% endif %}
Comment:
{{ entry.comment }}
{% endautoescape %}