# 63 Mail data deleted

* adds mail sending if shared data is deleted
* adds/updates translations
* refactors recording mails into separate email template folder email/recording
pull/65/head
mpeltriaux 3 years ago
parent 157f05ead6
commit 7c5454a2c9

@ -12,7 +12,7 @@ from abc import abstractmethod
from django.contrib import messages 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 celery_send_mail_shared_data_recorded, celery_send_mail_shared_data_unrecorded, celery_send_mail_shared_data_deleted
from user.models import User from user.models import User
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpRequest from django.http import HttpRequest
@ -121,6 +121,12 @@ class BaseObject(BaseResource):
action = UserActionLogEntry.get_deleted_action(user) action = UserActionLogEntry.get_deleted_action(user)
self.deleted = action self.deleted = action
self.log.add(action) self.log.add(action)
# Send mail
shared_users = self.users.all().values_list("id", flat=True)
for user_id in shared_users:
celery_send_mail_shared_data_deleted.delay(self.identifier, user_id)
self.save() self.save()
def add_log_entry(self, action: UserAction, user: User, comment: str): def add_log_entry(self, action: UserAction, user: User, comment: str):

@ -44,3 +44,10 @@ def celery_send_mail_shared_data_unrecorded(obj_identifier, user_id):
from user.models import User from user.models import User
user = User.objects.get(id=user_id) user = User.objects.get(id=user_id)
user.send_mail_shared_data_unrecorded(obj_identifier) user.send_mail_shared_data_unrecorded(obj_identifier)
@shared_task
def celery_send_mail_shared_data_deleted(obj_identifier, user_id):
from user.models import User
user = User.objects.get(id=user_id)
user.send_mail_shared_data_deleted(obj_identifier)

@ -94,7 +94,7 @@ class Mailer:
) )
def send_mail_shared_data_recorded(self, obj_identifier, user): def send_mail_shared_data_recorded(self, obj_identifier, user):
""" Send a mail if user just got access to the object """ Send a mail if the user's shared data has just been unrecorded
Args: Args:
obj_identifier (str): The object identifier obj_identifier (str): The object identifier
@ -107,7 +107,7 @@ class Mailer:
"obj_identifier": obj_identifier, "obj_identifier": obj_identifier,
"EMAIL_REPLY_TO": EMAIL_REPLY_TO, "EMAIL_REPLY_TO": EMAIL_REPLY_TO,
} }
msg = render_to_string("email/sharing/shared_data_recorded.html", context) msg = render_to_string("email/recording/shared_data_recorded.html", context)
user_mail_address = [user.email] user_mail_address = [user.email]
self.send( self.send(
user_mail_address, user_mail_address,
@ -116,7 +116,7 @@ class Mailer:
) )
def send_mail_shared_data_unrecorded(self, obj_identifier, user): def send_mail_shared_data_unrecorded(self, obj_identifier, user):
""" Send a mail if user just got access to the object """ Send a mail if the user's shared data has just been unrecorded
Args: Args:
obj_identifier (str): The object identifier obj_identifier (str): The object identifier
@ -129,7 +129,7 @@ class Mailer:
"obj_identifier": obj_identifier, "obj_identifier": obj_identifier,
"EMAIL_REPLY_TO": EMAIL_REPLY_TO, "EMAIL_REPLY_TO": EMAIL_REPLY_TO,
} }
msg = render_to_string("email/sharing/shared_data_unrecorded.html", context) msg = render_to_string("email/recording/shared_data_unrecorded.html", context)
user_mail_address = [user.email] user_mail_address = [user.email]
self.send( self.send(
user_mail_address, user_mail_address,
@ -137,3 +137,25 @@ class Mailer:
msg msg
) )
def send_mail_shared_data_deleted(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/deleting/shared_data_deleted.html", context)
user_mail_address = [user.email]
self.send(
user_mail_address,
_("{} - Shared data deleted").format(obj_identifier),
msg
)

Binary file not shown.

@ -26,7 +26,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-12 15:06+0100\n" "POT-Creation-Date: 2022-01-12 15:22+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -1762,10 +1762,10 @@ msgid "{} - Shared access given"
msgstr "{} - Zugriff freigegeben" msgstr "{} - Zugriff freigegeben"
#: konova/utils/mailer.py:114 #: konova/utils/mailer.py:114
msgid "{} - Shared data recorded" msgid "{} - Shared data deleted"
msgstr "{} - Freigegebene Daten verzeichnet" msgstr "{} - Freigegebene Daten gelöscht"
#: konova/utils/mailer.py:136 #: konova/utils/mailer.py:136 konova/utils/mailer.py:158
msgid "{} - Shared data unrecorded" msgid "{} - Shared data unrecorded"
msgstr "{} - Freigegebene Daten entzeichnet" msgstr "{} - Freigegebene Daten entzeichnet"
@ -1883,17 +1883,83 @@ msgstr "Alle"
msgid "News" msgid "News"
msgstr "Neuigkeiten" msgstr "Neuigkeiten"
#: templates/email/sharing/shared_access_given.html:4 #: templates/email/deleting/shared_data_deleted.html:4
msgid "Access shared" msgid "Shared data deleted"
msgstr "Zugriff freigegeben" msgstr "Freigegebene Daten gelöscht"
#: templates/email/deleting/shared_data_deleted.html:8
#: templates/email/recording/shared_data_recorded.html:8
#: templates/email/recording/shared_data_unrecorded.html:8
#: templates/email/sharing/shared_access_given.html:8 #: templates/email/sharing/shared_access_given.html:8
#: templates/email/sharing/shared_access_removed.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 " msgid "Hello "
msgstr "Hallo " msgstr "Hallo "
#: templates/email/deleting/shared_data_deleted.html:10
msgid "the following dataset has just been deleted"
msgstr "der folgende Datensatz wurde soeben gelöscht "
#: templates/email/deleting/shared_data_deleted.html:14
msgid ""
"If this should not have been happened, please contact us. See the signature "
"for details."
msgstr ""
"Falls das nicht hätte passieren dürfen, kontaktieren Sie uns bitte. In der E-mail Signatur finden Sie "
"weitere Kontaktinformationen."
#: templates/email/deleting/shared_data_deleted.html:17
#: templates/email/recording/shared_data_recorded.html:17
#: templates/email/recording/shared_data_unrecorded.html:17
#: templates/email/sharing/shared_access_given.html:18
#: templates/email/sharing/shared_access_removed.html:18
msgid "Best regards"
msgstr "Beste Grüße"
#: templates/email/recording/shared_data_recorded.html:4
msgid "Shared data recorded"
msgstr "Freigegebene Daten verzeichnet"
#: templates/email/recording/shared_data_recorded.html:10
msgid "the following dataset has just been recorded"
msgstr "der folgende Datensatz wurde soeben verzeichnet "
#: templates/email/recording/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/recording/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/recording/shared_data_unrecorded.html:4
msgid "Shared data unrecorded"
msgstr "Freigegebene Daten entzeichnet"
#: templates/email/recording/shared_data_unrecorded.html:10
msgid "the following dataset has just been unrecorded"
msgstr "der folgende Datensatz wurde soeben entzeichnet "
#: templates/email/recording/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/recording/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/sharing/shared_access_given.html:4
msgid "Access shared"
msgstr "Zugriff freigegeben"
#: templates/email/sharing/shared_access_given.html:10 #: templates/email/sharing/shared_access_given.html:10
msgid "the following dataset has just been shared with you" msgid "the following dataset has just been shared with you"
msgstr "der folgende Datensatz wurde soeben für Sie freigegeben " msgstr "der folgende Datensatz wurde soeben für Sie freigegeben "
@ -1910,13 +1976,6 @@ msgstr ""
"Der freigegebene Datensatz ist nun standardmäßig in Ihrer Übersicht für den " "Der freigegebene Datensatz ist nun standardmäßig in Ihrer Übersicht für den "
"Datensatztyp im KSP gelistet." "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:25 #: templates/email/sharing/shared_access_given.html:25
msgid "" msgid ""
"Please note: Shared access on an intervention means you automatically have " "Please note: Shared access on an intervention means you automatically have "
@ -1949,48 +2008,6 @@ msgstr ""
"Nutzen Sie hierzu einfach die entsprechenden Suchfilter auf den " "Nutzen Sie hierzu einfach die entsprechenden Suchfilter auf den "
"Übersichtsseiten" "Ü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 #: templates/email/signature.html:6
msgid "Please do not reply on this mail." msgid "Please do not reply on this mail."
msgstr "Bitte antworten Sie nicht auf diese Mail." msgstr "Bitte antworten Sie nicht auf diese Mail."
@ -3730,6 +3747,9 @@ msgstr ""
msgid "Unable to connect to qpid with SASL mechanism %s" msgid "Unable to connect to qpid with SASL mechanism %s"
msgstr "" msgstr ""
#~ msgid "{} - Shared data recorded"
#~ msgstr "{} - Freigegebene Daten verzeichnet"
#~ msgid "Not recorded" #~ msgid "Not recorded"
#~ msgstr "Noch nicht verzeichnet" #~ msgstr "Noch nicht verzeichnet"

@ -0,0 +1,26 @@
{% load i18n %}
<div>
<h2>{% trans 'Shared data deleted' %}</h2>
<h4>{{obj_identifier}}</h4>
<hr>
<article>
{% trans 'Hello ' %} {{user.username}},
<br>
{% trans 'the following dataset has just been deleted' %}
<br>
<strong>'{{obj_identifier}}'</strong>
<br>
{% trans 'If this should not have been happened, please contact us. See the signature for details.' %}
<br>
<br>
{% trans 'Best regards' %}
<br>
KSP
<br>
<br>
<br>
{% include 'email/signature.html' %}
</article>
</div>

@ -76,3 +76,17 @@ class User(AbstractUser):
if notification_set: if notification_set:
mailer = Mailer() mailer = Mailer()
mailer.send_mail_shared_data_unrecorded(obj_identifier, self) mailer.send_mail_shared_data_unrecorded(obj_identifier, self)
def send_mail_shared_data_deleted(self, obj_identifier):
""" Sends a mail to the user in case of shared data has been deleted
Args:
obj_identifier ():
Returns:
"""
notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_DELETED)
if notification_set:
mailer = Mailer()
mailer.send_mail_shared_data_deleted(obj_identifier, self)

@ -49,9 +49,6 @@ class UserActionLogEntry(models.Model):
"-timestamp", "-timestamp",
) )
def __str__(self):
return "{} | {} | {}".format(self.user.username, self.timestamp, self.action)
@property @property
def action_humanize(self): def action_humanize(self):
""" Returns humanized version of enum """ Returns humanized version of enum

Loading…
Cancel
Save