diff --git a/dav_events/emails.py b/dav_events/emails.py index efa90ae..79fdce3 100644 --- a/dav_events/emails.py +++ b/dav_events/emails.py @@ -101,3 +101,17 @@ class EventToPublishWebMail(EventToPublishMail): class EventToPublishFacebookMail(EventToPublishMail): _template_name = 'dav_events/emails/event_to_publish_facebook.txt' + + +class EventRegistrationClosedMail(AbstractEventMail): + _subject = u'Anmeldung geschlossen' + _template_name = 'dav_events/emails/event_registration_closed.txt' + + def __init__(self, editor=None, *args, **kwargs): + self._editor = editor + super(EventRegistrationClosedMail, self).__init__(*args, **kwargs) + + def _get_context_data(self, extra_context=None): + context = super(EventRegistrationClosedMail, self)._get_context_data(extra_context=extra_context) + context['editor'] = self._editor + return context diff --git a/dav_events/templates/dav_events/emails/event_registration_closed.txt b/dav_events/templates/dav_events/emails/event_registration_closed.txt new file mode 100644 index 0000000..b2f5e9d --- /dev/null +++ b/dav_events/templates/dav_events/emails/event_registration_closed.txt @@ -0,0 +1,12 @@ +{% load i18n %}Hallo {{ recipient.first_name }}, + +{{ editor.get_full_name }} hat die Anmeldung für die folgende Veranstaltung geschlossen. + +{{ number }} - {{ title }} + +Datum: {{ normalized_date }} +{% if deadline %}bisheriger Anmeldeschluss: {{ deadline|date:'l, d. F Y' }} +{% endif %}geplante Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}sofort{% endif %} + +Der folgende Link führt zur Veranstaltung: + {{ base_url }}{{ event.get_absolute_url }} diff --git a/dav_events/views/events.py b/dav_events/views/events.py index c088b62..6f4c785 100644 --- a/dav_events/views/events.py +++ b/dav_events/views/events.py @@ -16,9 +16,10 @@ from django.utils.translation import ugettext as _ from django.views import generic from .. import choices +from .. import emails from .. import forms from .. import models -from ..utils import has_role +from ..utils import get_users_by_role, has_role from ..workflow import DefaultWorkflow logger = logging.getLogger(__name__) @@ -192,21 +193,33 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView): return context + def _send_mails(self, event, request): + editor = request.user + recipients = get_users_by_role('publisher') + for recipient in recipients: + if recipient.email: + email = emails.EventRegistrationClosedMail(recipient=recipient, event=event, editor=editor) + email.send() + def post(self, request, *args, **kwargs): event = self.get_object() action = request.POST.get('action') if action == 'close-registration': + logger.info('Close registration: %s', event) event.registration_closed = True - event.save() + event.save(implicit_update=True) + self._send_mails(event, request) messages.success(request, _(u'Die Anmeldung wurde geschlossen')) elif action == 'open-registration': + logger.info('Reopen registration: %s', event) event.registration_closed = False - event.save() + event.save(implicit_update=True) messages.success(request, _(u'Die Anmeldung wurde geöffnet')) elif action == 'kill-deadline': + logger.info('Delete deadline: %s', event) event.deadline = None event.registration_closed = False - event.save() + event.save(implicit_update=True) messages.success(request, _(u'Der Anmeldeschluss wurde gelöscht')) return HttpResponseRedirect(reverse('dav_events:registrations', kwargs={'pk': event.pk}))