Not finished: first preparation for sending mails.
This commit is contained in:
@@ -8,6 +8,8 @@ MANAGE_S_GROUP = 'Skireferenten'
|
|||||||
MANAGE_M_GROUP = 'MTBReferenten'
|
MANAGE_M_GROUP = 'MTBReferenten'
|
||||||
MANAGE_K_GROUP = 'Kletterreferenten'
|
MANAGE_K_GROUP = 'Kletterreferenten'
|
||||||
MANAGE_B_GROUP = 'Bergsteigerreferenten'
|
MANAGE_B_GROUP = 'Bergsteigerreferenten'
|
||||||
|
PUBLISHER_GROUP = 'Redaktion'
|
||||||
|
INCREMENTAL_PUBLISHER_GROUP = 'OnlineRedaktion'
|
||||||
|
|
||||||
# Form Config
|
# Form Config
|
||||||
COMMON_CHAR_FIELD_LENGTH = 250
|
COMMON_CHAR_FIELD_LENGTH = 250
|
||||||
|
|||||||
99
dav_events/emails.py
Normal file
99
dav_events/emails.py
Normal 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
|
||||||
|
|
||||||
Reference in New Issue
Block a user