Improved group/role thing. Improved email sending (prepare for
OneClickAction).
This commit is contained in:
@@ -5,7 +5,7 @@ from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.mail import EmailMessage
|
||||
from django.template.loader import get_template
|
||||
|
||||
from .utils import get_group_members
|
||||
from .utils import get_users_by_role
|
||||
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -14,22 +14,16 @@ logger = logging.getLogger(__name__)
|
||||
def get_recipients(task, sport=None):
|
||||
users = []
|
||||
if task == 'accept':
|
||||
group_var_name = 'manage_all_group'
|
||||
group_name = getattr(app_config.settings, group_var_name, None)
|
||||
if group_name:
|
||||
users.extend(get_group_members(group_name, ignore_missing=True))
|
||||
role = 'manage_all'
|
||||
users += get_users_by_role(role)
|
||||
|
||||
if sport:
|
||||
group_var_name = 'manage_{}_group'.format(sport.lower())
|
||||
group_name = getattr(app_config.settings, group_var_name, None)
|
||||
if group_name:
|
||||
users.extend(get_group_members(group_name, ignore_missing=True))
|
||||
role = 'manage_{}'.format(sport.lower())
|
||||
users += get_users_by_role(role)
|
||||
|
||||
elif task == 'publish':
|
||||
group_var_name = 'incremental_publisher_group'
|
||||
group_name = getattr(app_config.settings, group_var_name, None)
|
||||
if group_name:
|
||||
users.extend(get_group_members(group_name, ignore_missing=True))
|
||||
role = 'incremental_publisher'
|
||||
users += get_users_by_role(role)
|
||||
else:
|
||||
raise ValueError('utils.get_recipients(): invalid value for task')
|
||||
|
||||
@@ -57,9 +51,9 @@ class AbstractMail(object):
|
||||
context.update(extra_context)
|
||||
return context
|
||||
|
||||
def _get_body(self):
|
||||
def _get_body(self, context=None):
|
||||
template = self._get_template()
|
||||
context = self._get_context_data()
|
||||
context = self._get_context_data(extra_context=context)
|
||||
return template.render(context)
|
||||
|
||||
def _get_recipients(self):
|
||||
@@ -82,11 +76,20 @@ class AbstractEventMail(AbstractMail):
|
||||
_subject = u'[DAV Veranstaltungen]'
|
||||
_template_name = 'dav_events/emails/default.txt'
|
||||
|
||||
def __init__(self, event):
|
||||
def __init__(self, recipient, event):
|
||||
self._recipient = recipient
|
||||
self._event = event
|
||||
|
||||
def _get_recipients(self):
|
||||
r = u'"{fullname}" <{email}>'.format(fullname=self._recipient.get_full_name(),
|
||||
email=self._recipient.email)
|
||||
return [r]
|
||||
|
||||
def _get_context_data(self, extra_context=None):
|
||||
context = super(AbstractEventMail, self)._get_context_data(extra_context=extra_context)
|
||||
context.update({
|
||||
'recipient': self._recipient,
|
||||
})
|
||||
context.update(self._event.get_template_context())
|
||||
return context
|
||||
|
||||
@@ -99,11 +102,6 @@ class NewEventMail(AbstractEventMail):
|
||||
s += u' Neue Veranstaltung angelegt'
|
||||
return s
|
||||
|
||||
def _get_recipients(self):
|
||||
r = u'{fullname} <{email}>'.format(fullname=self._event.owner.get_full_name(),
|
||||
email=self._event.owner.email)
|
||||
return [r]
|
||||
|
||||
|
||||
class EventToAcceptMail(AbstractEventMail):
|
||||
_template_name = 'dav_events/emails/event_to_accept.txt'
|
||||
@@ -113,9 +111,6 @@ class EventToAcceptMail(AbstractEventMail):
|
||||
s += u' Neue Veranstaltung freigeben'
|
||||
return s
|
||||
|
||||
def _get_recipients(self):
|
||||
return get_recipients('accept', self._event.sport)
|
||||
|
||||
|
||||
class EventAcceptedMail(AbstractEventMail):
|
||||
_template_name = 'dav_events/emails/event_accepted.txt'
|
||||
@@ -125,11 +120,6 @@ class EventAcceptedMail(AbstractEventMail):
|
||||
s += u' Veranstaltung wurde freigegeben'
|
||||
return s
|
||||
|
||||
def _get_recipients(self):
|
||||
r = u'{fullname} <{email}>'.format(fullname=self._event.owner.get_full_name(),
|
||||
email=self._event.owner.email)
|
||||
return [r]
|
||||
|
||||
|
||||
class EventToPublishMail(AbstractEventMail):
|
||||
_template_name = 'dav_events/emails/event_to_publish.txt'
|
||||
@@ -139,9 +129,6 @@ class EventToPublishMail(AbstractEventMail):
|
||||
s += u' Veranstaltung veröffentlichen'
|
||||
return s
|
||||
|
||||
def _get_recipients(self):
|
||||
return get_recipients('publish', self._event.sport)
|
||||
|
||||
|
||||
class PasswordSetEmail(AbstractMail):
|
||||
_subject = u'[DAV Veranstaltungen] Zugangsdaten'
|
||||
|
||||
Reference in New Issue
Block a user