Improved email...get_recipients().

This commit is contained in:
2018-01-23 18:38:35 +01:00
parent b1b573097d
commit 10841cb0cd
2 changed files with 45 additions and 46 deletions

View File

@@ -1,15 +1,40 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging import logging
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from django.template.loader import get_template from django.template.loader import get_template
from . import config from . import config
from .utils import get_group_members
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def get_recipients(task, sport=None):
users = []
if task == 'accept':
group_var_name = 'MANAGE_ALL_GROUP'
group_name = getattr(config, group_var_name, None)
if group_name:
users.extend(get_group_members(group_name, ignore_missing=True))
if sport:
group_var_name = 'MANAGE_{}_GROUP'.format(sport)
group_name = getattr(config, group_var_name, None)
if group_name:
users.extend(get_group_members(group_name, ignore_missing=True))
elif task == 'publish':
group_var_name = 'INCREMENTAL_PUBLISHER_GROUP'
group_name = getattr(config, group_var_name, None)
if group_name:
users.extend(get_group_members(group_name, ignore_missing=True))
else:
raise ValueError('utils.get_recipients(): invalid value for task')
for u in users:
yield '{name} <{addr}>'.format(name=u.get_full_name(), addr=u.email)
class AbstractMail(object): class AbstractMail(object):
_sender = config.EMAIL_SENDER _sender = config.EMAIL_SENDER
_subject = 'Generic Mail' _subject = 'Generic Mail'
@@ -30,7 +55,6 @@ class AbstractMail(object):
recipients = self._get_recipients() recipients = self._get_recipients()
emo = EmailMessage(subject=subject, body=body, from_email=sender, to=recipients) emo = EmailMessage(subject=subject, body=body, from_email=sender, to=recipients)
logger.debug('sending mail to %s', recipients)
emo.send() emo.send()
@@ -74,34 +98,7 @@ class EventToAcceptMail(AbstractEventMail):
return s return s
def _get_recipients(self): def _get_recipients(self):
recipients = [] return get_recipients('accept', self._event.sport)
sport = self._event.sport
group_var_name = 'MANAGE_{}_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.all():
r = '{fullname} <{email}>'.format(fullname=user.get_full_name(),
email=user.email)
recipients.append(r)
except Group.DoesNotExist:
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.all():
r = '{fullname} <{email}>'.format(fullname=user.get_full_name(),
email=user.email)
recipients.append(r)
except Group.DoesNotExist:
pass
return recipients
class EventAcceptedMail(AbstractEventMail): class EventAcceptedMail(AbstractEventMail):
@@ -127,18 +124,4 @@ class EventToPublishMail(AbstractEventMail):
return s return s
def _get_recipients(self): def _get_recipients(self):
recipients = [] return get_recipients('publish', self._event.sport)
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.all():
r = '{fullname} <{email}>'.format(fullname=user.get_full_name(),
email=user.email)
recipients.append(r)
except Group.DoesNotExist:
pass
return recipients

16
dav_events/utils.py Normal file
View File

@@ -0,0 +1,16 @@
import logging
from django.contrib.auth.models import Group
logger = logging.getLogger(__name__)
def get_group_members(group_name, ignore_missing=False):
users = []
try:
group = Group.objects.get(name=group_name)
users.extend(group.user_set.all())
except Group.DoesNotExist:
if not ignore_missing:
raise
return users