Fix #65 #88
@@ -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)
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user