From 43af31232ef68408e1bb38f70c0210ecab174f74 Mon Sep 17 00:00:00 2001
From: Jens Kleineheismann
Date: Thu, 22 Nov 2018 11:47:30 +0100
Subject: [PATCH] UPD: improved email templates.
---
dav_events/apps.py | 4 ++--
dav_events/models/event.py | 12 ++++++------
.../dav_events/emails/event_accepted.txt | 8 ++++++--
.../dav_events/emails/event_submitted.txt | 8 +++++---
.../dav_events/emails/event_to_accept.txt | 6 ++++--
.../dav_events/emails/event_to_publish.txt | 19 +++++++++++--------
.../dav_events/emails/event_updated.txt | 9 +++------
.../templates/dav_events/event/default.txt | 14 +++++++++++++-
dav_events/workflow.py | 14 +++++++++++---
9 files changed, 61 insertions(+), 33 deletions(-)
diff --git a/dav_events/apps.py b/dav_events/apps.py
index af30b48..e30a866 100644
--- a/dav_events/apps.py
+++ b/dav_events/apps.py
@@ -32,5 +32,5 @@ class AppConfig(_AppConfig):
default_settings = DEFAULT_SETTINGS
def ready(self):
- signals.event_updated.connect(workflow.email_event_update)
- signals.event_status_updated.connect(workflow.email_event_status_update)
\ No newline at end of file
+ signals.event_updated.connect(workflow.send_emails_on_event_update)
+ signals.event_status_updated.connect(workflow.send_emails_on_event_status_update)
diff --git a/dav_events/models/event.py b/dav_events/models/event.py
index 3d7afc3..c0fd23b 100644
--- a/dav_events/models/event.py
+++ b/dav_events/models/event.py
@@ -291,7 +291,7 @@ class Event(models.Model):
creating = True
else:
original = Event.objects.get(id=self.id)
- original_text = original.render_as_text()
+ original_text = original.render_as_text(show_internal_fields=True)
if not self.editor or not self.editor.is_authenticated:
self.editor = self.owner
@@ -302,15 +302,15 @@ class Event(models.Model):
logger.info('Event created: %s', self)
self.confirm_status('draft', self.editor)
else:
- modified_text = self.render_as_text()
+ modified_text = self.render_as_text(show_internal_fields=True)
o_lines = original_text.split('\n')
m_lines = modified_text.split('\n')
diff_lines = list(difflib.unified_diff(o_lines, m_lines, n=len(m_lines), lineterm=''))
- diff_text = '\n'.join(diff_lines[3:])
- signals.event_updated.send(sender=self.__class__, event=self, diff=diff_text, user=self.editor)
+ signals.event_updated.send(sender=self.__class__, event=self, diff=diff_lines, user=self.editor)
logger.info('Event updated: %s', self)
def _internal_update(self):
+ """Safe changes on model instance without sending event_updated signal."""
if not self.id:
logger.critical('Event._internal_update() was called before Event was saved properly.')
raise Exception('Code is on fire!')
@@ -603,7 +603,7 @@ class Event(models.Model):
r.update(context)
return r
- def render_as_text(self, format=None):
+ def render_as_text(self, format=None, show_internal_fields=False):
if format == 'ka-alpin':
template_name = 'ka-alpin.txt'
else:
@@ -611,7 +611,7 @@ class Event(models.Model):
template_path = os.path.join('dav_events', 'event', template_name)
template = get_template(template_path)
- return template.render(self.get_template_context())
+ return template.render(self.get_template_context({'show_internal_fields': show_internal_fields}))
def render_as_html(self):
template_name = os.path.join('dav_events', 'event', 'default.html')
diff --git a/dav_events/templates/dav_events/emails/event_accepted.txt b/dav_events/templates/dav_events/emails/event_accepted.txt
index 2dd33f7..372a5f3 100644
--- a/dav_events/templates/dav_events/emails/event_accepted.txt
+++ b/dav_events/templates/dav_events/emails/event_accepted.txt
@@ -8,5 +8,9 @@ Link zur Veranstaltung:
Voraussichtliche Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}In wenigen Tagen{% endif %}
-----------
-{{ event.render_as_text }}----------
+Ausschreibung:
+==============
+{{ event.render_as_text }}{% if internal_note %}
+Bearbeitungshinweis:
+====================
+{{ internal_note }}{% endif %}
diff --git a/dav_events/templates/dav_events/emails/event_submitted.txt b/dav_events/templates/dav_events/emails/event_submitted.txt
index 4347f52..4db6686 100644
--- a/dav_events/templates/dav_events/emails/event_submitted.txt
+++ b/dav_events/templates/dav_events/emails/event_submitted.txt
@@ -8,7 +8,9 @@ Link zur Veranstaltung:
Voraussichtliche Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}In wenigen Tagen{% endif %}
-----------
-{{ event.render_as_text }}----------
-{% if internal_note %}Bearbeitungshinweis:
+Ausschreibung:
+==============
+{{ event.render_as_text }}{% if internal_note %}
+Bearbeitungshinweis:
+====================
{{ internal_note }}{% endif %}
\ No newline at end of file
diff --git a/dav_events/templates/dav_events/emails/event_to_accept.txt b/dav_events/templates/dav_events/emails/event_to_accept.txt
index 68d79f0..e3d5da1 100644
--- a/dav_events/templates/dav_events/emails/event_to_accept.txt
+++ b/dav_events/templates/dav_events/emails/event_to_accept.txt
@@ -10,7 +10,9 @@ Der folgende Link führt zur Veranstaltung:
Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}sofort{% endif %}
{% if internal_note %}
Bearbeitungshinweis:
+====================
{{ internal_note }}
{% endif %}
-----------
-{{ event.render_as_text }}----------
+Ausschreibung:
+==============
+{{ event.render_as_text }}
diff --git a/dav_events/templates/dav_events/emails/event_to_publish.txt b/dav_events/templates/dav_events/emails/event_to_publish.txt
index 07f0c54..2fe5d38 100644
--- a/dav_events/templates/dav_events/emails/event_to_publish.txt
+++ b/dav_events/templates/dav_events/emails/event_to_publish.txt
@@ -8,15 +8,23 @@ Der folgende Link führt zur Veranstaltung:
Über den folgenden Link kannst du die Veröffentlichung unmittelbar bestätigen:
{{ base_url }}{{ confirm_publication_url }}
-Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}sofort{% endif %}
+Veröffentlichung: ({% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}sofort{% endif %})
+=================
+{% if planned_publication_date %}Veröffentlichung starten: {{ planned_publication_date|date:'d.m.Y' }} 00:00:00
+{% endif %}Veröffentlichung beenden: {{ day_after|date:'d.m.Y' }} 00:00:00
+Erstellungsdatum: {{ first_day|date:'d.m.Y' }} 00:00:00
+Titel: {{ number }} - {{ title }}
{% if internal_note %}
Bearbeitungshinweis:
+====================
{{ internal_note }}
{% endif %}
----------- Plain Text ----------
+Ausschreibung:
+==============
{{ event.render_as_text }}
----------- HTML Joomla ----------
+Joomla HTML
+===========
{{ normalized_long_date }}{% if alt_normalized_long_date %}
({% trans 'Ersatztermin' %}: {{ alt_normalized_long_date }})
{% endif %}
@@ -66,8 +74,3 @@ Bearbeitungshinweis:
{% endif %}
{% if registration_required and registration_howto %}{{ registration_howto|urlize }}
{% endif %}
----------- Veröffentlichung ----------
-{% if planned_publication_date %}Veröffentlichung starten: {{ planned_publication_date|date:'d.m.Y' }} 00:00:00
-{% endif %}Veröffentlichung beenden: {{ day_after|date:'d.m.Y' }} 00:00:00
-Erstellungsdatum: {{ first_day|date:'d.m.Y' }} 00:00:00
-Titel: {{ number }} - {{ title }}
\ No newline at end of file
diff --git a/dav_events/templates/dav_events/emails/event_updated.txt b/dav_events/templates/dav_events/emails/event_updated.txt
index 7359a22..1b93a0a 100644
--- a/dav_events/templates/dav_events/emails/event_updated.txt
+++ b/dav_events/templates/dav_events/emails/event_updated.txt
@@ -6,9 +6,6 @@ Hallo {{ recipient.first_name }},
Link zur Veranstaltung:
{{ base_url }}{{ event.get_absolute_url }}
-Voraussichtliche Veröffentlichung: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}In wenigen Tagen{% endif %}
-
-----------
-{{ diff }}----------
-{% if internal_note %}Bearbeitungshinweis:
-{{ internal_note }}{% endif %}
\ No newline at end of file
+ Ausschreibung:
+ ==============
+{{ diff }}
\ No newline at end of file
diff --git a/dav_events/templates/dav_events/event/default.txt b/dav_events/templates/dav_events/event/default.txt
index 85efcae..b563404 100644
--- a/dav_events/templates/dav_events/event/default.txt
+++ b/dav_events/templates/dav_events/event/default.txt
@@ -47,4 +47,16 @@
{% endif %}{% if trainer_familyname %}{% trans 'Leitung' %}: {{ trainer_firstname }} {{ trainer_familyname }}{% if trainer_email or trainer_phone %} ({% if trainer_email %}{{ trainer_email }}{% endif %}{% if trainer_email and trainer_phone %}, {% endif %}{% if trainer_phone %}{{ trainer_phone }}{% endif %}){% endif %}
{% endif %}{% if registration_required and registration_howto %}
{{ registration_howto }}
-{% endif %}
\ No newline at end of file
+{% endif %}{% if show_internal_fields %}
+{% trans 'Nichtöffentliche Daten' %}:
+=======================
+{% trans 'Veranstaltungsart' %}: {{ event.get_mode_display }}
+{% trans 'Schwierigkeitsnivau' %}: {{ event.get_level_display }}
+{% if event.sport == 'S' %}{% trans 'Skiliftbenutzung' %}: {% if event.ski_list %}{% trans 'Ja' %}{% else %}{% trans 'Nein' %}{% endif %}
+{% endif %}{% trans 'Gelände' %}: {{ event.get_terrain_display }}
+{% trans 'Anreise des Kurs-/Tourenleiters am Vortag' %}: {% if event.arrival_previous_day %}{% trans 'Ja' %}{% else %}{% trans 'Nein' %}{% endif %}
+{% trans 'Veröffentlichung' %}: {% if planned_publication_date %}{{ planned_publication_date|date:'l, d. F Y' }}{% else %}{% trans 'sofort' %}{% endif %}
+{% if internal_note %}
+{% trans 'Bearbeitungshinweis' %}:
+====================
+{{ internal_note }}{% endif %}{% endif %}
\ No newline at end of file
diff --git a/dav_events/workflow.py b/dav_events/workflow.py
index 2cf5a89..6ea085b 100644
--- a/dav_events/workflow.py
+++ b/dav_events/workflow.py
@@ -1,9 +1,12 @@
+import logging
from django.apps import apps
from . import emails
+logger = logging.getLogger(__name__)
-def email_event_update(sender, **kwargs):
+
+def send_emails_on_event_update(sender, **kwargs):
event = kwargs.get('event')
diff = kwargs.get('diff')
updater = kwargs.get('user')
@@ -12,6 +15,11 @@ def email_event_update(sender, **kwargs):
if not app_config.settings.enable_email_notifications:
return
+ if len(diff) < 1:
+ logger.debug('send_emails_on_event_update(): No diff data -> Skip sending mails.')
+ return
+ diff_text = '\n'.join(diff[3:])
+
# Who should be informed about the update?
recipients = [event.owner]
if event.is_flagged('submitted'):
@@ -25,11 +33,11 @@ def email_event_update(sender, **kwargs):
for recipient in recipients:
if recipient.email and recipient.email != updater.email:
- email = emails.EventUpdatedMail(recipient=recipient, event=event, editor=updater, diff=diff)
+ email = emails.EventUpdatedMail(recipient=recipient, event=event, editor=updater, diff=diff_text)
email.send()
-def email_event_status_update(sender, **kwargs):
+def send_emails_on_event_status_update(sender, **kwargs):
event = kwargs.get('event')
flag = kwargs.get('flag')
updator = flag.user