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