diff --git a/dav_events/config.py b/dav_events/config.py index e758e52..e5f4fac 100644 --- a/dav_events/config.py +++ b/dav_events/config.py @@ -8,6 +8,8 @@ MANAGE_S_GROUP = 'Skireferenten' MANAGE_M_GROUP = 'MTBReferenten' MANAGE_K_GROUP = 'Kletterreferenten' MANAGE_B_GROUP = 'Bergsteigerreferenten' +PUBLISHER_GROUP = 'Redaktion' +INCREMENTAL_PUBLISHER_GROUP = 'OnlineRedaktion' # Form Config COMMON_CHAR_FIELD_LENGTH = 250 diff --git a/dav_events/emails.py b/dav_events/emails.py new file mode 100644 index 0000000..276b07c --- /dev/null +++ b/dav_events/emails.py @@ -0,0 +1,99 @@ +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group +from django.core.mail import EmailMessage + +from . import config + + +class AbstractMail(object): + _subject = 'Generic Mail' + + def _get_subject(self, **kwargs): + return self._subject.format(**kwargs) + + def _get_body(self): + raise NotImplementedError() + + def _get_recipients(self): + raise NotImplementedError() + + def send(self): + subject = self._get_subject() + body = self._get_body() + recipients = self._get_recipients() + + emo = EmailMessage(subject=subject, body=body, to=recipients) + emo.send() + + +class AbstractEventMail(AbstractMail): + _subject = 'DAV Events' + + def __init__(self, event): + self._event = event + + +class NewEventMail(AbstractEventMail): + def get_recipients(self): + r = '{fullname} <{email}>'.format(fullname=self._event.owner.get_fullname(), + email=self._event.owner.email) + return [r] + + +class NewEventToAcceptMail(AbstractEventMail): + def get_recipients(self): + recipients = [] + + sport = self._event.sport + group_var_name = 'MANAGE_{K}_GROUP'.format(sport) + group_name = getattr(config, group_var_name, None) + if group_name: + try: + group = Group.objects.get(name=group_name) + for user in group.user_set: + r = '{fullname} <{email}>'.format(fullname=user.get_fullname(), + email=user.email) + recipients.append(r) + except Group.DoesNotExists: + pass + + group_var_name = 'MANAGE_ALL_GROUP' + group_name = getattr(config, group_var_name, None) + if group_name: + try: + group = Group.objects.get(name=group_name) + for user in group.user_set: + r = '{fullname} <{email}>'.format(fullname=user.get_fullname(), + email=user.email) + recipients.append(r) + except Group.DoesNotExists: + pass + + return recipients + + +class EventAcceptedMail(AbstractEventMail): + def get_recipients(self): + r = '{fullname} <{email}>'.format(fullname=self._event.owner.get_fullname(), + email=self._event.owner.email) + return [r] + + +class NewEventToPublishMail(AbstractEventMail): + def get_recipients(self): + recipients = [] + + group_var_name = 'INCREMENTAL_PUBLISHER_GROUP' + group_name = getattr(config, group_var_name, None) + if group_name: + try: + group = Group.objects.get(name=group_name) + for user in group.user_set: + r = '{fullname} <{email}>'.format(fullname=user.get_fullname(), + email=user.email) + recipients.append(r) + except Group.DoesNotExists: + pass + + return recipients +