Improved email...get_recipients().
This commit is contained in:
@@ -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
16
dav_events/utils.py
Normal 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
|
||||||
Reference in New Issue
Block a user