ADD: added support for Event Updated Mail.

This commit is contained in:
2018-11-21 13:33:45 +01:00
parent 6cae9d5e33
commit 30b5e920ee
7 changed files with 217 additions and 115 deletions

79
dav_events/workflow.py Normal file
View File

@@ -0,0 +1,79 @@
from django.apps import apps
from . import emails
def email_event_update(sender, **kwargs):
event = kwargs.get('event')
diff = kwargs.get('diff')
updater = kwargs.get('user')
app_config = apps.get_containing_app_config(__package__)
if not app_config.settings.enable_email_notifications:
return
# Who should be informed about the update?
recipients = [event.owner]
if event.is_flagged('submitted'):
# If the event is already submitted, add managers to the recipients.
from .utils import get_users_by_role
recipients += get_users_by_role('manage_all')
recipients += get_users_by_role('manage_{}'.format(event.sport.lower()))
if event.is_flagged('accepted'):
# If the event is already published, add publishers to the recipients.
recipients += get_users_by_role('publish_incremental')
for recipient in recipients:
if recipient.email and recipient.email != updater.email:
email = emails.EventUpdatedMail(recipient=recipient, event=event, diff=diff, editor=updater)
email.send()
def email_event_status_update(sender, **kwargs):
event = kwargs.get('event')
flag = kwargs.get('flag')
app_config = apps.get_containing_app_config(__package__)
if not app_config.settings.enable_email_notifications:
return
if flag.status.code == 'submitted':
# Inform event owner about his event (so he can keep the mail as a reminder for the event).
if event.owner.email:
email = emails.EventSubmittedMail(recipient=event.owner, event=event)
email.send()
# Inform managers that they have to accept the event.
# Also create OneClickActions for all of them and add the link to the mail,
# so they can accept the event with a click into the mail.
from .utils import get_users_by_role
recipients = get_users_by_role('manage_all')
recipients += get_users_by_role('manage_{}'.format(event.sport.lower()))
OneClickAction = app_config.get_model('OneClickAction')
for recipient in recipients:
if recipient.email:
action = OneClickAction(command='EA')
action.parameters = '{event},{user}'.format(event=event.id, user=recipient.id)
action.save()
email = emails.EventToAcceptMail(recipient=recipient, event=event, accept_action=action)
email.send()
elif flag.status.code == 'accepted':
# Inform event owner about the acceptance of his event.
if event.owner.email:
email = emails.EventAcceptedMail(recipient=event.owner, event=event)
email.send()
# Inform publishers that they have to publish the event.
# Also create OneClickActions for all of them and add the link to the mail,
# so they can confirm the publication with a click into the mail.
from .utils import get_users_by_role
recipients = get_users_by_role('publish_incremental')
OneClickAction = app_config.get_model('OneClickAction')
for recipient in recipients:
if recipient.email:
action = OneClickAction(command='EP')
action.parameters = '{event},{user}'.format(event=event.id, user=recipient.id)
action.save()
email = emails.EventToPublishMail(recipient=recipient, event=event, confirm_publication_action=action)
email.send()