Not finished: first preparation for sending mails.

This commit is contained in:
2018-01-22 14:43:54 +01:00
parent 1ec81a07c0
commit d16929f7f7
2 changed files with 101 additions and 0 deletions

View File

@@ -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

99
dav_events/emails.py Normal file
View File

@@ -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