From 157f05ead632a68fc0f86b64d22d46623f6dad9c Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Wed, 12 Jan 2022 15:09:52 +0100 Subject: [PATCH] # 63 Mail recording/unrecording * adds mail sending in case of unrecording and recording of data * adds/updates translations --- konova/models/object.py | 13 ++- konova/tasks.py | 16 +++- konova/utils/mailer.py | 44 ++++++++++ locale/de/LC_MESSAGES/django.mo | Bin 31667 -> 33012 bytes locale/de/LC_MESSAGES/django.po | 76 +++++++++++++++--- .../email/sharing/shared_data_recorded.html | 31 +++++++ .../email/sharing/shared_data_unrecorded.html | 31 +++++++ user/models/user.py | 34 +++++++- 8 files changed, 230 insertions(+), 15 deletions(-) create mode 100644 templates/email/sharing/shared_data_recorded.html create mode 100644 templates/email/sharing/shared_data_unrecorded.html diff --git a/konova/models/object.py b/konova/models/object.py index 65b0c1a..175cf3a 100644 --- a/konova/models/object.py +++ b/konova/models/object.py @@ -11,7 +11,8 @@ from abc import abstractmethod from django.contrib import messages -from konova.tasks import celery_send_mail_shared_access_removed, celery_send_mail_shared_access_given +from konova.tasks import celery_send_mail_shared_access_removed, celery_send_mail_shared_access_given, \ + celery_send_mail_shared_data_recorded, celery_send_mail_shared_data_unrecorded from user.models import User from django.core.exceptions import ObjectDoesNotExist from django.http import HttpRequest @@ -218,6 +219,11 @@ class RecordableObjectMixin(models.Model): self.recorded = None self.save() self.log.add(action) + + shared_users = self.users.all().values_list("id", flat=True) + for user_id in shared_users: + celery_send_mail_shared_data_unrecorded(self.identifier, user_id) + return action def set_recorded(self, user: User): @@ -235,6 +241,11 @@ class RecordableObjectMixin(models.Model): self.recorded = action self.save() self.log.add(action) + + shared_users = self.users.all().values_list("id", flat=True) + for user_id in shared_users: + celery_send_mail_shared_data_recorded(self.identifier, user_id) + return action def mark_as_edited(self, performing_user: User, request: HttpRequest = None, edit_comment: str = None): diff --git a/konova/tasks.py b/konova/tasks.py index 5495683..ee7aabd 100644 --- a/konova/tasks.py +++ b/konova/tasks.py @@ -29,4 +29,18 @@ def celery_send_mail_shared_access_removed(obj_identifier, user_id): def celery_send_mail_shared_access_given(obj_identifier, user_id): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_access_given(obj_identifier) \ No newline at end of file + user.send_mail_shared_access_given(obj_identifier) + + +@shared_task +def celery_send_mail_shared_data_recorded(obj_identifier, user_id): + from user.models import User + user = User.objects.get(id=user_id) + user.send_mail_shared_data_recorded(obj_identifier) + + +@shared_task +def celery_send_mail_shared_data_unrecorded(obj_identifier, user_id): + from user.models import User + user = User.objects.get(id=user_id) + user.send_mail_shared_data_unrecorded(obj_identifier) diff --git a/konova/utils/mailer.py b/konova/utils/mailer.py index 87ffe29..107ac8c 100644 --- a/konova/utils/mailer.py +++ b/konova/utils/mailer.py @@ -93,3 +93,47 @@ class Mailer: msg ) + def send_mail_shared_data_recorded(self, obj_identifier, user): + """ Send a mail if user just got access to the object + + Args: + obj_identifier (str): The object identifier + + Returns: + + """ + context = { + "user": user, + "obj_identifier": obj_identifier, + "EMAIL_REPLY_TO": EMAIL_REPLY_TO, + } + msg = render_to_string("email/sharing/shared_data_recorded.html", context) + user_mail_address = [user.email] + self.send( + user_mail_address, + _("{} - Shared data recorded").format(obj_identifier), + msg + ) + + def send_mail_shared_data_unrecorded(self, obj_identifier, user): + """ Send a mail if user just got access to the object + + Args: + obj_identifier (str): The object identifier + + Returns: + + """ + context = { + "user": user, + "obj_identifier": obj_identifier, + "EMAIL_REPLY_TO": EMAIL_REPLY_TO, + } + msg = render_to_string("email/sharing/shared_data_unrecorded.html", context) + user_mail_address = [user.email] + self.send( + user_mail_address, + _("{} - Shared data unrecorded").format(obj_identifier), + msg + ) + diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index d9103b58eb531b1082357e9d93bcffe4d12d9c29..77a572718db6aca9e38e8c7c235c74f00174dd7b 100644 GIT binary patch delta 10585 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index f1f99f9..012d25d 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-12 14:31+0100\n" +"POT-Creation-Date: 2022-01-12 15:06+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1761,6 +1761,14 @@ msgstr "{} - Zugriff entzogen" msgid "{} - Shared access given" msgstr "{} - Zugriff freigegeben" +#: konova/utils/mailer.py:114 +msgid "{} - Shared data recorded" +msgstr "{} - Freigegebene Daten verzeichnet" + +#: konova/utils/mailer.py:136 +msgid "{} - Shared data unrecorded" +msgstr "{} - Freigegebene Daten entzeichnet" + #: konova/utils/message_templates.py:11 msgid "There was an error on this form." msgstr "Es gab einen Fehler im Formular." @@ -1881,6 +1889,8 @@ msgstr "Zugriff freigegeben" #: templates/email/sharing/shared_access_given.html:8 #: templates/email/sharing/shared_access_removed.html:8 +#: templates/email/sharing/shared_data_recorded.html:8 +#: templates/email/sharing/shared_data_unrecorded.html:8 msgid "Hello " msgstr "Hallo " @@ -1897,20 +1907,24 @@ msgid "" "The shared dataset appears now by default on your overview for this dataset " "type." msgstr "" -"Der freigegebene Datensatz ist nun standardmäßig in Ihrer Übersicht für den Datensatztyp im KSP gelistet." +"Der freigegebene Datensatz ist nun standardmäßig in Ihrer Übersicht für den " +"Datensatztyp im KSP gelistet." + +#: templates/email/sharing/shared_access_given.html:18 +#: templates/email/sharing/shared_access_removed.html:18 +#: templates/email/sharing/shared_data_recorded.html:17 +#: templates/email/sharing/shared_data_unrecorded.html:17 +msgid "Best regards" +msgstr "Beste Grüße" -#: templates/email/sharing/shared_access_given.html:16 +#: templates/email/sharing/shared_access_given.html:25 msgid "" "Please note: Shared access on an intervention means you automatically have " "editing access to related compensations." msgstr "" -"Bitte beachten Sie: Freigegebener Zugriff auf einen Eingriff bedeutet, dass Sie automatisch auch " -"Zugriff auf die zugehörigen Kompensationen erhalten haben." - -#: templates/email/sharing/shared_access_given.html:19 -#: templates/email/sharing/shared_access_removed.html:18 -msgid "Best regards" -msgstr "Beste Grüße" +"Bitte beachten Sie: Freigegebener Zugriff auf einen Eingriff bedeutet, dass " +"Sie automatisch auch Zugriff auf die zugehörigen Kompensationen erhalten " +"haben." #: templates/email/sharing/shared_access_removed.html:4 msgid "Shared access removed" @@ -1935,6 +1949,48 @@ msgstr "" "Nutzen Sie hierzu einfach die entsprechenden Suchfilter auf den " "Übersichtsseiten" +#: templates/email/sharing/shared_data_recorded.html:4 +msgid "Shared data recorded" +msgstr "Freigegebene Daten verzeichnet" + +#: templates/email/sharing/shared_data_recorded.html:10 +msgid "the following dataset has just been recorded" +msgstr "der folgende Datensatz wurde soeben verzeichnet " + +#: templates/email/sharing/shared_data_recorded.html:14 +msgid "This means the data is now publicly available, e.g. in LANIS" +msgstr "" +"Das bedeutet, dass die Daten nun öffentlich verfügbar sind, z.B. im LANIS." + +#: templates/email/sharing/shared_data_recorded.html:24 +msgid "" +"Please note: Recorded intervention means the compensations are recorded as " +"well." +msgstr "" +"Bitte beachten Sie: Verzeichnete Eingriffe bedeuten, dass auch die " +"zugehörigen Kompensationen automatisch verzeichnet sind." + +#: templates/email/sharing/shared_data_unrecorded.html:4 +msgid "Shared data unrecorded" +msgstr "Freigegebene Daten entzeichnet" + +#: templates/email/sharing/shared_data_unrecorded.html:10 +msgid "the following dataset has just been unrecorded" +msgstr "der folgende Datensatz wurde soeben entzeichnet " + +#: templates/email/sharing/shared_data_unrecorded.html:14 +msgid "This means the data is no longer publicly available." +msgstr "" +"Das bedeutet, dass die Daten nicht länger öffentlich verfügbar sind." + +#: templates/email/sharing/shared_data_unrecorded.html:24 +msgid "" +"Please note: Unrecorded intervention means the compensations are unrecorded " +"as well." +msgstr "" +"Bitte beachten Sie: Entzeichnete Eingriffe bedeuten, dass auch die " +"zugehörigen Kompensationen automatisch entzeichnet worden sind." + #: templates/email/signature.html:6 msgid "Please do not reply on this mail." msgstr "Bitte antworten Sie nicht auf diese Mail." diff --git a/templates/email/sharing/shared_data_recorded.html b/templates/email/sharing/shared_data_recorded.html new file mode 100644 index 0000000..82d236d --- /dev/null +++ b/templates/email/sharing/shared_data_recorded.html @@ -0,0 +1,31 @@ +{% load i18n %} + +
+

{% trans 'Shared data recorded' %}

+

{{obj_identifier}}

+
+
+ {% trans 'Hello ' %} {{user.username}}, +
+ {% trans 'the following dataset has just been recorded' %} +
+ '{{obj_identifier}}' +
+ {% trans 'This means the data is now publicly available, e.g. in LANIS' %} +
+
+ {% trans 'Best regards' %} +
+ KSP +
+
+
+ + {% trans 'Please note: Recorded intervention means the compensations are recorded as well.' %} + +
+
+ {% include 'email/signature.html' %} +
+
+ diff --git a/templates/email/sharing/shared_data_unrecorded.html b/templates/email/sharing/shared_data_unrecorded.html new file mode 100644 index 0000000..a40e7ce --- /dev/null +++ b/templates/email/sharing/shared_data_unrecorded.html @@ -0,0 +1,31 @@ +{% load i18n %} + +
+

{% trans 'Shared data unrecorded' %}

+

{{obj_identifier}}

+
+
+ {% trans 'Hello ' %} {{user.username}}, +
+ {% trans 'the following dataset has just been unrecorded' %} +
+ '{{obj_identifier}}' +
+ {% trans 'This means the data is no longer publicly available.' %} +
+
+ {% trans 'Best regards' %} +
+ KSP +
+
+
+ + {% trans 'Please note: Unrecorded intervention means the compensations are unrecorded as well.' %} + +
+
+ {% include 'email/signature.html' %} +
+
+ diff --git a/user/models/user.py b/user/models/user.py index e8e6ae7..51c8bcf 100644 --- a/user/models/user.py +++ b/user/models/user.py @@ -25,7 +25,7 @@ class User(AbstractUser): """ Sends a mail to the user in case of removed shared access Args: - obj (): + obj_identifier (): Returns: @@ -36,10 +36,10 @@ class User(AbstractUser): mailer.send_mail_shared_access_removed(obj_identifier, self) def send_mail_shared_access_given(self, obj_identifier): - """ Sends a mail to the user in case of removed shared access + """ Sends a mail to the user in case of given shared access Args: - obj (): + obj_identifier (): Returns: @@ -48,3 +48,31 @@ class User(AbstractUser): if notification_set: mailer = Mailer() mailer.send_mail_shared_access_given(obj_identifier, self) + + def send_mail_shared_data_recorded(self, obj_identifier): + """ Sends a mail to the user in case of shared data has been recorded + + Args: + obj_identifier (): + + Returns: + + """ + notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED) + if notification_set: + mailer = Mailer() + mailer.send_mail_shared_data_recorded(obj_identifier, self) + + def send_mail_shared_data_unrecorded(self, obj_identifier): + """ Sends a mail to the user in case of shared data has been unrecorded + + Args: + obj_identifier (): + + Returns: + + """ + notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED) + if notification_set: + mailer = Mailer() + mailer.send_mail_shared_data_unrecorded(obj_identifier, self)