Fix #65 #88

Merged
heinzel merged 5 commits from notify into master 2024-09-17 15:32:19 +02:00
6 changed files with 27 additions and 9 deletions
Showing only changes of commit 39440a695e - Show all commits

View File

@@ -5,6 +5,7 @@ from dav_base.config.apps import AppConfig as _AppConfig, DefaultSetting
DEFAULT_SETTINGS = ( DEFAULT_SETTINGS = (
DefaultSetting('enable_email_on_status_update', False), DefaultSetting('enable_email_on_status_update', False),
DefaultSetting('enable_email_on_update', False), DefaultSetting('enable_email_on_update', False),
DefaultSetting('enable_email_on_registration_closed', False),
DefaultSetting('groups_manager_super', []), DefaultSetting('groups_manager_super', []),
DefaultSetting('groups_manager_w', []), DefaultSetting('groups_manager_w', []),
DefaultSetting('groups_manager_s', []), DefaultSetting('groups_manager_s', []),
@@ -33,3 +34,4 @@ class AppConfig(_AppConfig):
from . import signals from . import signals
signals.event_updated.connect(signals.signal_handler_for_event_update) signals.event_updated.connect(signals.signal_handler_for_event_update)
signals.event_status_updated.connect(signals.signal_handler_for_event_status_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)

View File

@@ -5,6 +5,7 @@ from dav_events.config import FieldInitial
# E-Mails # E-Mails
ENABLE_EMAIL_ON_STATUS_UPDATE = False ENABLE_EMAIL_ON_STATUS_UPDATE = False
ENABLE_EMAIL_ON_UPDATE = False ENABLE_EMAIL_ON_UPDATE = False
ENABLE_EMAIL_ON_REGISTRATION_CLOSED = False
# Authorization Roles / Groups # Authorization Roles / Groups
GROUPS_MANAGER_SUPER = ['Tourenreferenten'] GROUPS_MANAGER_SUPER = ['Tourenreferenten']

View File

@@ -3,6 +3,7 @@ from django.dispatch import Signal
event_created = Signal(providing_args=['event']) event_created = Signal(providing_args=['event'])
event_updated = Signal(providing_args=['event', 'diff', 'user']) event_updated = Signal(providing_args=['event', 'diff', 'user'])
event_status_updated = Signal(providing_args=['event', 'flag']) event_status_updated = Signal(providing_args=['event', 'flag'])
event_registration_closed = Signal(providing_args=['event', 'user'])
def signal_handler_for_event_update(sender, **kwargs): 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') event = kwargs.get('event')
flag = kwargs.get('flag') flag = kwargs.get('flag')
event.workflow.send_emails_on_status_update(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)

View File

@@ -9,6 +9,7 @@ class TestCase(AppsTestCase):
settings = ( settings = (
AppSetting('enable_email_on_status_update', bool), AppSetting('enable_email_on_status_update', bool),
AppSetting('enable_email_on_update', bool), AppSetting('enable_email_on_update', bool),
AppSetting('enable_email_on_registration_closed', bool),
AppSetting('groups_manager_super', list), AppSetting('groups_manager_super', list),
AppSetting('groups_manager_w', list), AppSetting('groups_manager_w', list),
AppSetting('groups_manager_s', list), AppSetting('groups_manager_s', list),

View File

@@ -21,6 +21,7 @@ from .. import choices
from .. import emails from .. import emails
from .. import forms from .. import forms
from .. import models from .. import models
from .. import signals
from ..roles import get_users_by_role, has_role from ..roles import get_users_by_role, has_role
from ..workflow import DefaultWorkflow from ..workflow import DefaultWorkflow
@@ -261,19 +262,11 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
return context 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): def _close_registration(self, request, event):
logger.info('Close registration: %s', event) logger.info('Close registration: %s', event)
event.registration_closed = True event.registration_closed = True
event.save(implicit_update=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')) messages.success(request, _(u'Die Anmeldung wurde geschlossen'))
def _reopen_registration(self, request, event): def _reopen_registration(self, request, event):

View File

@@ -436,6 +436,20 @@ class BasicWorkflow(object):
email = emails.EventCanceledMail(recipient=recipient, event=event, editor=updater) email = emails.EventCanceledMail(recipient=recipient, event=event, editor=updater)
email.send() 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 # Permissions
# #