Added a model for event state (including data migration, signal based
notifications, etc.)
This commit is contained in:
@@ -5,38 +5,20 @@ from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.mail import EmailMessage
|
||||
from django.template.loader import get_template
|
||||
|
||||
from .utils import get_users_by_role
|
||||
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_recipients(task, sport=None):
|
||||
users = []
|
||||
if task == 'accept':
|
||||
role = 'manage_all'
|
||||
users += get_users_by_role(role)
|
||||
|
||||
if sport:
|
||||
role = 'manage_{}'.format(sport.lower())
|
||||
users += get_users_by_role(role)
|
||||
|
||||
elif task == 'publish':
|
||||
role = 'incremental_publisher'
|
||||
users += get_users_by_role(role)
|
||||
else:
|
||||
raise ValueError('utils.get_recipients(): invalid value for task')
|
||||
|
||||
return [u'{name} <{addr}>'.format(name=u.get_full_name(), addr=u.email) for u in users]
|
||||
|
||||
|
||||
class AbstractMail(object):
|
||||
_sender = app_config.settings.email_sender
|
||||
_subject = u''
|
||||
_template_name = None
|
||||
|
||||
def _get_sender(self):
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
return app_config.settings.email_sender
|
||||
|
||||
def _get_subject(self, **kwargs):
|
||||
s = self._subject
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
if app_config.settings.email_subject_prefix:
|
||||
s = u'%s %s' % (app_config.settings.email_subject_prefix, s)
|
||||
s.format(**kwargs)
|
||||
@@ -48,6 +30,7 @@ class AbstractMail(object):
|
||||
return get_template(self._template_name)
|
||||
|
||||
def _get_context_data(self, extra_context=None):
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
context = {
|
||||
'base_url': app_config.settings.email_base_url,
|
||||
}
|
||||
@@ -66,7 +49,7 @@ class AbstractMail(object):
|
||||
def send(self):
|
||||
subject = self._get_subject()
|
||||
body = self._get_body()
|
||||
sender = self._sender
|
||||
sender = self._get_sender()
|
||||
recipients = self._get_recipients()
|
||||
|
||||
emo = EmailMessage(subject=subject, body=body, from_email=sender, to=recipients)
|
||||
@@ -92,11 +75,6 @@ class AbstractEventMail(AbstractMail):
|
||||
context.update(self._event.get_template_context())
|
||||
return context
|
||||
|
||||
def send(self):
|
||||
if not app_config.settings.enable_email_notifications:
|
||||
return None
|
||||
return super(AbstractEventMail, self).send()
|
||||
|
||||
|
||||
class NewEventMail(AbstractEventMail):
|
||||
_template_name = 'dav_events/emails/new_event.txt'
|
||||
|
||||
Reference in New Issue
Block a user