Now only sent emails when:

- any notifiable_fields is update
    - an object is create
    - an object is delete
remotes/origin/enhancement/email-actions
David Barragán Merino 2013-10-29 17:27:51 +01:00
parent 3c496eb547
commit 886e4554bc
2 changed files with 9 additions and 6 deletions

View File

@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-i
# -*- coding: utf-8 -*-
from djmail import template_mail
@ -15,14 +15,17 @@ class NotificationSenderMixin(object):
email.send()
def post_save(self, obj, created=False):
super().post_save(obj, created)
users = obj.get_watchers_to_notify(self.request.user)
context = {'changer': self.request.user, 'object': obj}
changed_fields_dict = obj.get_changed_fields_dict(self.request.DATA)
if created:
self._send_notification_email(self.create_notification_template,
users=users, context=context)
else:
context["changed_fields_dict"] = obj.get_changed_fields_dict(self.request.DATA)
elif changed_fields_dict:
context["changed_fields_dict"] = changed_fields_dict
self._send_notification_email(self.update_notification_template,
users=users, context=context)
@ -34,4 +37,4 @@ class NotificationSenderMixin(object):
self._send_notification_email(self.destroy_notification_template,
users=users, context=context)
return super(NotificationSenderMixin, self).destroy(request, *args, **kwargs)
return super().destroy(request, *args, **kwargs)

View File

@ -73,7 +73,7 @@ class WatchedMixin(models.Model):
changed_data = data_dict
field_dict = {}
for field_name, data_value in data_dict.items():
for field_name, data_value in changed_data.items():
field_dict.update(self._get_changed_field(field_name, data_value))
return field_dict