Added a model for event state (including data migration, signal based

notifications, etc.)
This commit is contained in:
2018-07-04 16:56:13 +02:00
parent 0e7c14ace9
commit 3c7ef05099
27 changed files with 712 additions and 355 deletions

View File

@@ -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'