diff --git a/dav_events/apps.py b/dav_events/apps.py index 22ec78a..1157ed5 100644 --- a/dav_events/apps.py +++ b/dav_events/apps.py @@ -5,6 +5,7 @@ from dav_base.config.apps import AppConfig as _AppConfig, DefaultSetting DEFAULT_SETTINGS = ( DefaultSetting('enable_email_on_status_update', False), DefaultSetting('enable_email_on_update', False), + DefaultSetting('enable_email_on_registration_closed', False), DefaultSetting('groups_manager_super', []), DefaultSetting('groups_manager_w', []), DefaultSetting('groups_manager_s', []), @@ -33,3 +34,4 @@ class AppConfig(_AppConfig): from . import signals signals.event_updated.connect(signals.signal_handler_for_event_update) signals.event_status_updated.connect(signals.signal_handler_for_event_status_update) + signals.event_registration_closed.connect(signals.signal_handler_for_event_registration_closed) diff --git a/dav_events/django_project_config/settings-dav_events.py b/dav_events/django_project_config/settings-dav_events.py index fc8ca9c..f8620cf 100644 --- a/dav_events/django_project_config/settings-dav_events.py +++ b/dav_events/django_project_config/settings-dav_events.py @@ -5,6 +5,7 @@ from dav_events.config import FieldInitial # E-Mails ENABLE_EMAIL_ON_STATUS_UPDATE = False ENABLE_EMAIL_ON_UPDATE = False +ENABLE_EMAIL_ON_REGISTRATION_CLOSED = False # Authorization Roles / Groups GROUPS_MANAGER_SUPER = ['Tourenreferenten'] diff --git a/dav_events/signals.py b/dav_events/signals.py index 6e977ef..918c472 100644 --- a/dav_events/signals.py +++ b/dav_events/signals.py @@ -3,6 +3,7 @@ from django.dispatch import Signal event_created = Signal(providing_args=['event']) event_updated = Signal(providing_args=['event', 'diff', 'user']) event_status_updated = Signal(providing_args=['event', 'flag']) +event_registration_closed = Signal(providing_args=['event', 'user']) def signal_handler_for_event_update(sender, **kwargs): @@ -16,3 +17,9 @@ def signal_handler_for_event_status_update(sender, **kwargs): event = kwargs.get('event') flag = kwargs.get('flag') event.workflow.send_emails_on_status_update(flag) + + +def signal_handler_for_event_registration_closed(sender, **kwargs): + event = kwargs.get('event') + updater = kwargs.get('user') + event.workflow.send_emails_on_registration_closed(updater) diff --git a/dav_events/tests/test_apps.py b/dav_events/tests/test_apps.py index 80180f5..a61d99a 100644 --- a/dav_events/tests/test_apps.py +++ b/dav_events/tests/test_apps.py @@ -9,6 +9,7 @@ class TestCase(AppsTestCase): settings = ( AppSetting('enable_email_on_status_update', bool), AppSetting('enable_email_on_update', bool), + AppSetting('enable_email_on_registration_closed', bool), AppSetting('groups_manager_super', list), AppSetting('groups_manager_w', list), AppSetting('groups_manager_s', list), diff --git a/dav_events/views/events.py b/dav_events/views/events.py index 823cdd3..463e5b2 100644 --- a/dav_events/views/events.py +++ b/dav_events/views/events.py @@ -21,6 +21,7 @@ from .. import choices from .. import emails from .. import forms from .. import models +from .. import signals from ..roles import get_users_by_role, has_role from ..workflow import DefaultWorkflow @@ -261,19 +262,11 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView): return context - def _notify_publisher(self, event, editor): - recipients = get_users_by_role('publisher_web') - recipients += get_users_by_role('publisher_facebook') - for recipient in recipients: - if recipient.email: - email = emails.EventRegistrationClosedMail(recipient=recipient, event=event, editor=editor) - email.send() - def _close_registration(self, request, event): logger.info('Close registration: %s', event) event.registration_closed = True event.save(implicit_update=True) - self._notify_publisher(event, request.user) + signals.event_registration_closed.send(sender=self.__class__, event=event, user=request.user) messages.success(request, _(u'Die Anmeldung wurde geschlossen')) def _reopen_registration(self, request, event): diff --git a/dav_events/workflow.py b/dav_events/workflow.py index b5a8405..81e7cf8 100644 --- a/dav_events/workflow.py +++ b/dav_events/workflow.py @@ -436,6 +436,20 @@ class BasicWorkflow(object): email = emails.EventCanceledMail(recipient=recipient, event=event, editor=updater) email.send() + def send_emails_on_registration_closed(self, updater): + event = self._event + + app_config = apps.get_containing_app_config(__package__) + if not app_config.settings.enable_email_on_registration_closed: + return + + recipients = get_users_by_role('publisher_web') + recipients += get_users_by_role('publisher_facebook') + for recipient in recipients: + if recipient.email: + email = emails.EventRegistrationClosedMail(recipient=recipient, event=event, editor=updater) + email.send() + # # Permissions #