Reviewed-on: #88
This commit was merged in pull request #88.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import EventStatus, EventFlag, Event, OneClickAction, Participant, TrashedParticipant
|
from .models import EventStatus, EventFlag, EventChange, Event, OneClickAction, Participant, TrashedParticipant
|
||||||
|
|
||||||
|
|
||||||
@admin.register(EventStatus)
|
@admin.register(EventStatus)
|
||||||
@@ -8,6 +8,11 @@ class EventStatusAdmin(admin.ModelAdmin):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class EventChangeInline(admin.TabularInline):
|
||||||
|
model = EventChange
|
||||||
|
extra = 1
|
||||||
|
|
||||||
|
|
||||||
class EventFlagInline(admin.TabularInline):
|
class EventFlagInline(admin.TabularInline):
|
||||||
model = EventFlag
|
model = EventFlag
|
||||||
extra = 1
|
extra = 1
|
||||||
@@ -19,7 +24,7 @@ class EventParticipantInline(admin.TabularInline):
|
|||||||
|
|
||||||
@admin.register(Event)
|
@admin.register(Event)
|
||||||
class EventAdmin(admin.ModelAdmin):
|
class EventAdmin(admin.ModelAdmin):
|
||||||
inlines = [EventFlagInline, EventParticipantInline]
|
inlines = [EventChangeInline, EventFlagInline, EventParticipantInline]
|
||||||
ordering = ['sport', 'number']
|
ordering = ['sport', 'number']
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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', []),
|
||||||
@@ -31,5 +32,6 @@ class AppConfig(_AppConfig):
|
|||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
from . import signals
|
from . import signals
|
||||||
signals.event_updated.connect(signals.send_emails_on_event_update)
|
signals.event_updated.connect(signals.signal_handler_for_event_update)
|
||||||
signals.event_status_updated.connect(signals.send_emails_on_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)
|
||||||
|
|||||||
@@ -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']
|
||||||
|
|||||||
@@ -259,7 +259,6 @@ class Event(models.Model):
|
|||||||
|
|
||||||
def save(self, implicit_update=False, **kwargs):
|
def save(self, implicit_update=False, **kwargs):
|
||||||
creating = False
|
creating = False
|
||||||
original_text = ''
|
|
||||||
|
|
||||||
if not self.id:
|
if not self.id:
|
||||||
user_model = get_user_model()
|
user_model = get_user_model()
|
||||||
|
|||||||
@@ -3,16 +3,23 @@ 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 send_emails_on_event_update(sender, **kwargs):
|
def signal_handler_for_event_update(sender, **kwargs):
|
||||||
event = kwargs.get('event')
|
event = kwargs.get('event')
|
||||||
diff = kwargs.get('diff')
|
diff = kwargs.get('diff')
|
||||||
updater = kwargs.get('user')
|
updater = kwargs.get('user')
|
||||||
event.workflow.send_emails_on_update(diff, updater)
|
event.workflow.send_emails_on_update(diff, updater)
|
||||||
|
|
||||||
|
|
||||||
def send_emails_on_event_status_update(sender, **kwargs):
|
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)
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class BasicWorkflow(object):
|
|||||||
flag.save()
|
flag.save()
|
||||||
change = EventChange(event=event, user=flag.user, operation=EventChange.RAISE_FLAG, content=status.code)
|
change = EventChange(event=event, user=flag.user, operation=EventChange.RAISE_FLAG, content=status.code)
|
||||||
change.save()
|
change.save()
|
||||||
logger.info('Flagging status \'%s\' for %s', status.code, event)
|
logger.info('Flagged status \'%s\' for %s (ID: %d)', status.code, event, event.id)
|
||||||
return flag
|
return flag
|
||||||
|
|
||||||
# TODO: the name/intention of this method is unclear. Could we make it obsolete?
|
# TODO: the name/intention of this method is unclear. Could we make it obsolete?
|
||||||
@@ -75,7 +75,7 @@ class BasicWorkflow(object):
|
|||||||
if event.flags.filter(status__code='accepted').exists():
|
if event.flags.filter(status__code='accepted').exists():
|
||||||
if not event.number:
|
if not event.number:
|
||||||
self.set_number()
|
self.set_number()
|
||||||
logger.info('Setting number on Event %s', event)
|
logger.info('Assigned number to Event %s (ID: %d)', event, event.id)
|
||||||
|
|
||||||
if code in (None,
|
if code in (None,
|
||||||
'publishing_facebook',
|
'publishing_facebook',
|
||||||
@@ -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
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user