From 7b3b40f3c9809b454bf4ddda0a9c05eca32cf7a1 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 11 Dec 2023 13:40:32 +0100 Subject: [PATCH] Mail links * adds direct object links into mail templates * refactors transferring app-model identification data from fore- to background (celery) properly --- compensation/models/compensation.py | 9 +++++ compensation/models/eco_account.py | 11 +++++- ema/models/ema.py | 7 ++++ intervention/models/intervention.py | 7 ++++ konova/models/object.py | 37 +++++++++++-------- konova/models/resubmission.py | 9 ++++- konova/sub_settings/django_settings.py | 2 + konova/tasks.py | 29 +++++++++++++++ konova/tests/unit/test_models.py | 6 +-- .../email/checking/shared_data_checked.html | 2 +- .../checking/shared_data_checked_team.html | 2 +- templates/email/other/deduction_changed.html | 1 + .../email/other/deduction_changed_team.html | 1 + .../email/recording/shared_data_recorded.html | 2 +- .../recording/shared_data_recorded_team.html | 2 +- .../recording/shared_data_unrecorded.html | 2 +- .../shared_data_unrecorded_team.html | 2 +- .../email/resubmission/resubmission.html | 2 +- .../email/sharing/shared_access_given.html | 2 +- .../sharing/shared_access_given_team.html | 2 +- .../email/sharing/shared_access_removed.html | 2 +- .../sharing/shared_access_removed_team.html | 2 +- 22 files changed, 107 insertions(+), 34 deletions(-) diff --git a/compensation/models/compensation.py b/compensation/models/compensation.py index 86956b42..eaf8ccbb 100644 --- a/compensation/models/compensation.py +++ b/compensation/models/compensation.py @@ -8,11 +8,13 @@ Created on: 16.11.21 import shutil from django.contrib import messages +from django.urls import reverse from analysis.settings import LKOMPVZVO_PUBLISH_DATE from codelist.models import KonovaCode from compensation.settings import COMPENSATION_IDENTIFIER_TEMPLATE, COMPENSATION_IDENTIFIER_LENGTH, \ COMPENSATION_LANIS_LAYER_NAME_RECORDED, COMPENSATION_LANIS_LAYER_NAME_UNRECORDED, COMPENSATION_LANIS_LAYER_NAME_UNRECORDED_OLD_ENTRY +from konova.sub_settings.django_settings import BASE_URL from user.models import User, Team from django.db import models, transaction from django.db.models import QuerySet, Sum @@ -307,6 +309,13 @@ class Compensation(AbstractCompensation, CEFMixin, CoherenceMixin, PikMixin): def __str__(self): return "{}".format(self.identifier) + def get_detail_url(self): + return reverse("compensation:detail", args=(self.id,)) + + def get_detail_url_absolute(self): + return BASE_URL + self.get_detail_url() + + def save(self, *args, **kwargs): if self.identifier is None or len(self.identifier) == 0: # Create new identifier is none was given diff --git a/compensation/models/eco_account.py b/compensation/models/eco_account.py index a321ff99..59ae0609 100644 --- a/compensation/models/eco_account.py +++ b/compensation/models/eco_account.py @@ -11,6 +11,7 @@ from django.urls import reverse from compensation.settings import ECO_ACCOUNT_IDENTIFIER_TEMPLATE, ECO_ACCOUNT_IDENTIFIER_LENGTH, \ ECO_ACCOUNT_LANIS_LAYER_NAME_RECORDED, ECO_ACCOUNT_LANIS_LAYER_NAME_UNRECORDED +from konova.sub_settings.django_settings import BASE_URL from konova.utils.message_templates import DEDUCTION_REMOVED, DOCUMENT_REMOVED_TEMPLATE from django.core.validators import MinValueValidator from django.db import models @@ -58,6 +59,12 @@ class EcoAccount(AbstractCompensation, ShareableObjectMixin, RecordableObjectMix def __str__(self): return f"{self.identifier} ({self.title})" + def get_detail_url(self): + return reverse("compensation:acc:detail", args=(self.id,)) + + def get_detail_url_absolute(self): + return BASE_URL + self.get_detail_url() + def save(self, *args, **kwargs): if self.identifier is None or len(self.identifier) == 0: # Create new identifier if none was given @@ -161,12 +168,12 @@ class EcoAccount(AbstractCompensation, ShareableObjectMixin, RecordableObjectMix # Send mail shared_users = self.shared_users.values_list("id", flat=True) for user_id in shared_users: - celery_send_mail_deduction_changed.delay(self.id, self.__class__, user_id, data_change) + celery_send_mail_deduction_changed.delay(self.id, self.get_app_object_tuple(), user_id, data_change) # Send mail shared_teams = self.shared_teams.values_list("id", flat=True) for team_id in shared_teams: - celery_send_mail_deduction_changed_team.delay(self.id, self.__class__, team_id, data_change) + celery_send_mail_deduction_changed_team.delay(self.id, self.get_app_object_tuple(), team_id, data_change) def update_deductable_rest(self): """ diff --git a/ema/models/ema.py b/ema/models/ema.py index d312c6a0..5e86129d 100644 --- a/ema/models/ema.py +++ b/ema/models/ema.py @@ -19,6 +19,7 @@ from ema.settings import EMA_IDENTIFIER_LENGTH, EMA_IDENTIFIER_TEMPLATE, EMA_LAN EMA_LANIS_LAYER_NAME_UNRECORDED from ema.utils.quality import EmaQualityChecker from konova.models import AbstractDocument, generate_document_file_upload_path, RecordableObjectMixin, ShareableObjectMixin +from konova.sub_settings.django_settings import BASE_URL from konova.utils.message_templates import DATA_UNSHARED_EXPLANATION, DOCUMENT_REMOVED_TEMPLATE @@ -46,6 +47,12 @@ class Ema(AbstractCompensation, ShareableObjectMixin, RecordableObjectMixin, Pik def __str__(self): return "{}".format(self.identifier) + def get_detail_url(self): + return reverse("ema:detail", args=(self.id,)) + + def get_detail_url_absolute(self): + return BASE_URL + self.get_detail_url() + def save(self, *args, **kwargs): if self.identifier is None or len(self.identifier) == 0: # Create new identifier diff --git a/intervention/models/intervention.py b/intervention/models/intervention.py index e6077694..225dca51 100644 --- a/intervention/models/intervention.py +++ b/intervention/models/intervention.py @@ -18,6 +18,7 @@ from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_I INTERVENTION_LANIS_LAYER_NAME_RECORDED, INTERVENTION_LANIS_LAYER_NAME_UNRECORDED_OLD_ENTRY, \ INTERVENTION_LANIS_LAYER_NAME_UNRECORDED from intervention.tasks import celery_export_to_egon +from konova.sub_settings.django_settings import BASE_URL from user.models import User from django.db import models, transaction from django.db.models import QuerySet @@ -69,6 +70,12 @@ class Intervention(BaseObject, def __str__(self): return f"{self.identifier} ({self.title})" + def get_detail_url(self): + return reverse("intervention:detail", args=(self.id,)) + + def get_detail_url_absolute(self): + return BASE_URL + self.get_detail_url() + def save(self, *args, **kwargs): """ Custom save functionality diff --git a/konova/models/object.py b/konova/models/object.py index db38ff47..e2acaebd 100644 --- a/konova/models/object.py +++ b/konova/models/object.py @@ -117,12 +117,12 @@ class DeletableObjectMixin(models.Model): # Send mail shared_users = self.shared_users.values_list("id", flat=True) for user_id in shared_users: - celery_send_mail_shared_data_deleted.delay(self.identifier, self.title, user_id) + celery_send_mail_shared_data_deleted.delay(self.id, self.get_app_object_tuple(), user_id) # Send mail shared_teams = self.shared_teams.values_list("id", flat=True) for team_id in shared_teams: - celery_send_mail_shared_data_deleted_team.delay(self.id, self.__class__, team_id) + celery_send_mail_shared_data_deleted_team.delay(self.id, self.get_app_object_tuple(), team_id) self.save() @@ -215,6 +215,14 @@ class BaseObject(BaseResource, DeletableObjectMixin): def get_detail_url(self): raise NotImplementedError() + def get_app_object_tuple(self): + """ Getter for a tuple, consisting of app and object name of the object + + Returns: + tuple (tuple) + """ + return (self._meta.app_label, self._meta.object_name) + class RecordableObjectMixin(models.Model): """ Wraps record related fields and functionality @@ -254,10 +262,10 @@ class RecordableObjectMixin(models.Model): shared_teams = self.shared_teams.values_list("id", flat=True) for user_id in shared_users: - celery_send_mail_shared_data_unrecorded.delay(self.id, self.__class__, user_id) + celery_send_mail_shared_data_unrecorded.delay(self.id, self.get_app_object_tuple(), user_id) for team_id in shared_teams: - celery_send_mail_shared_data_unrecorded_team.delay(self.id, self.__class__, team_id) + celery_send_mail_shared_data_unrecorded_team.delay(self.id, self.get_app_object_tuple(), team_id) return action @@ -284,10 +292,10 @@ class RecordableObjectMixin(models.Model): shared_teams = self.shared_teams.values_list("id", flat=True) for user_id in shared_users: - celery_send_mail_shared_data_recorded.delay(self.id, self.__class__, user_id) + celery_send_mail_shared_data_recorded.delay(self.id, self.get_app_object_tuple(), user_id) for team_id in shared_teams: - celery_send_mail_shared_data_recorded_team.delay(self.id, self.__class__, team_id) + celery_send_mail_shared_data_recorded_team.delay(self.id, self.get_app_object_tuple(), team_id) return action @@ -361,12 +369,12 @@ class CheckableObjectMixin(models.Model): # Send mail shared_users = self.shared_users.values_list("id", flat=True) for user_id in shared_users: - celery_send_mail_shared_data_checked.delay(self.id, self.__class__, user_id) + celery_send_mail_shared_data_checked.delay(self.id, self.get_app_object_tuple(), user_id) # Send mail shared_teams = self.shared_teams.values_list("id", flat=True) for team_id in shared_teams: - celery_send_mail_shared_data_checked_team.delay(self.id, self.__class__, team_id) + celery_send_mail_shared_data_checked_team.delay(self.id, self.get_app_object_tuple(), team_id) self.log.add(action) return action @@ -550,9 +558,9 @@ class ShareableObjectMixin(models.Model): ).values_list("id", flat=True) for team_id in new_teams: - celery_send_mail_shared_access_given_team.delay(self.id, self.__class__, team_id) + celery_send_mail_shared_access_given_team.delay(self.id, self.get_app_object_tuple(), team_id) for team_id in removed_teams: - celery_send_mail_shared_access_removed_team.delay(self.id, self.__class__, team_id) + celery_send_mail_shared_access_removed_team.delay(self.id, self.get_app_object_tuple(), team_id) self.share_with_team_list(accessing_teams) @@ -579,9 +587,9 @@ class ShareableObjectMixin(models.Model): # Send mails for user_id in removed_users: - celery_send_mail_shared_access_removed.delay(self.id, self.__class__, user_id) + celery_send_mail_shared_access_removed.delay(self.id, self.get_app_object_tuple(), user_id) for user_id in new_users: - celery_send_mail_shared_access_given.delay(self.id, self.__class__, user_id) + celery_send_mail_shared_access_given.delay(self.id, self.get_app_object_tuple(), user_id) # Set new shared users self.share_with_user_list(accessing_users) @@ -644,7 +652,7 @@ class ShareableObjectMixin(models.Model): self.share_with_user_list(cleaned_users) for user in default_users: - celery_send_mail_shared_access_removed.delay(self.id, self.__class__, user.id) + celery_send_mail_shared_access_removed.delay(self.id, self.get_app_object_tuple(), user.id) class GeoReferencedMixin(models.Model): @@ -736,6 +744,5 @@ class ResubmitableObjectMixin(models.Model): """ resubmissions = self.resubmissions.all() - municipal_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for resubmission in resubmissions: - resubmission.send_resubmission_mail(self.identifier, municipal_names) + resubmission.send_resubmission_mail(self.id, self.get_app_object_tuple()) diff --git a/konova/models/resubmission.py b/konova/models/resubmission.py index e5fc7144..59ff0a0f 100644 --- a/konova/models/resubmission.py +++ b/konova/models/resubmission.py @@ -6,6 +6,7 @@ Created on: 15.08.22 """ from dateutil.utils import today +from django.apps import apps from django.db import models from konova.models import BaseResource @@ -31,16 +32,20 @@ class Resubmission(BaseResource): help_text="Optional comment for the user itself" ) - def send_resubmission_mail(self, obj_identifier, municipal_names): + def send_resubmission_mail(self, obj_id, obj_class): """ Sends a resubmission mail """ + obj_class = apps.get_model(obj_class[0], obj_class[1]) + obj = obj_class.objects.get(id=obj_id) + municipal_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) + _today = today().date() resubmission_handled = _today.__ge__(self.resubmit_on) and self.resubmission_sent if resubmission_handled: return mailer = Mailer() - mailer.send_mail_resubmission(obj_identifier, self, municipal_names) + mailer.send_mail_resubmission(obj, self, municipal_names) self.resubmission_sent = True self.save() diff --git a/konova/sub_settings/django_settings.py b/konova/sub_settings/django_settings.py index 906cafee..46386953 100644 --- a/konova/sub_settings/django_settings.py +++ b/konova/sub_settings/django_settings.py @@ -37,6 +37,8 @@ ADMINS = [ ('KSP-Servicestelle', 'ksp-servicestelle@sgdnord.rlp.de'), ] +BASE_URL = "http://localhost:8001" + ALLOWED_HOSTS = [ "127.0.0.1", "localhost", diff --git a/konova/tasks.py b/konova/tasks.py index 02f8d276..aa8a65ba 100644 --- a/konova/tasks.py +++ b/konova/tasks.py @@ -1,6 +1,7 @@ from time import sleep from celery import shared_task +from django.apps import apps from django.core.exceptions import ObjectDoesNotExist @@ -28,6 +29,8 @@ def celery_update_parcels(geometry_id: str, recheck: bool = True): def celery_send_mail_shared_access_removed(obj_id, obj_class, user_id=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -38,6 +41,8 @@ def celery_send_mail_shared_access_removed(obj_id, obj_class, user_id=None): def celery_send_mail_shared_access_given(obj_id, obj_class, user_id=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -48,6 +53,8 @@ def celery_send_mail_shared_access_given(obj_id, obj_class, user_id=None): def celery_send_mail_shared_access_removed_team(obj_id, obj_class, team_id=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -58,6 +65,8 @@ def celery_send_mail_shared_access_removed_team(obj_id, obj_class, team_id=None) def celery_send_mail_shared_access_given_team(obj_id, obj_class, team_id=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -68,6 +77,8 @@ def celery_send_mail_shared_access_given_team(obj_id, obj_class, team_id=None): def celery_send_mail_shared_data_recorded(obj_id, obj_class, user_id=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -78,6 +89,8 @@ def celery_send_mail_shared_data_recorded(obj_id, obj_class, user_id=None): def celery_send_mail_shared_data_unrecorded(obj_id, obj_class, user_id=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -88,6 +101,8 @@ def celery_send_mail_shared_data_unrecorded(obj_id, obj_class, user_id=None): def celery_send_mail_shared_data_recorded_team(obj_id, obj_class, team_id=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -98,6 +113,8 @@ def celery_send_mail_shared_data_recorded_team(obj_id, obj_class, team_id=None): def celery_send_mail_shared_data_unrecorded_team(obj_id, obj_class, team_id=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -108,6 +125,8 @@ def celery_send_mail_shared_data_unrecorded_team(obj_id, obj_class, team_id=None def celery_send_mail_shared_data_deleted(obj_id, obj_class, user_id=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -118,6 +137,8 @@ def celery_send_mail_shared_data_deleted(obj_id, obj_class, user_id=None): def celery_send_mail_shared_data_checked(obj_id, obj_class, user_id=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -128,6 +149,8 @@ def celery_send_mail_shared_data_checked(obj_id, obj_class, user_id=None): def celery_send_mail_shared_data_deleted_team(obj_id, obj_class, team_id=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -138,6 +161,8 @@ def celery_send_mail_shared_data_deleted_team(obj_id, obj_class, team_id=None): def celery_send_mail_shared_data_checked_team(obj_id, obj_class, team_id=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) @@ -148,6 +173,8 @@ def celery_send_mail_shared_data_checked_team(obj_id, obj_class, team_id=None): def celery_send_mail_deduction_changed_team(obj_id, obj_class, team_id=None, data_changes=None): from user.models import Team team = Team.objects.get(id=team_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) team.send_mail_deduction_changed(obj, data_changes) @@ -156,6 +183,8 @@ def celery_send_mail_deduction_changed_team(obj_id, obj_class, team_id=None, dat def celery_send_mail_deduction_changed(obj_id, obj_class, user_id=None, data_changes=None): from user.models import User user = User.objects.get(id=user_id) + + obj_class = apps.get_model(obj_class[0], obj_class[1]) obj = obj_class.objects.get(id=obj_id) user.send_mail_deduction_changed(obj, data_changes) diff --git a/konova/tests/unit/test_models.py b/konova/tests/unit/test_models.py index 2ec7f0f3..622a8eb1 100644 --- a/konova/tests/unit/test_models.py +++ b/konova/tests/unit/test_models.py @@ -193,9 +193,7 @@ class ResubmissionTestCase(BaseTestCase): self.assertFalse(resubmission.resubmission_sent) resubmission.send_resubmission_mail( - self.intervention.identifier, - [ - "Test_municipal_1" - ], + self.intervention.id, + self.intervention.get_app_object_tuple() ) self.assertTrue(resubmission.resubmission_sent) diff --git a/templates/email/checking/shared_data_checked.html b/templates/email/checking/shared_data_checked.html index 665a2a2f..2919538b 100644 --- a/templates/email/checking/shared_data_checked.html +++ b/templates/email/checking/shared_data_checked.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been checked' %}
- {{obj.identifier}} + {{obj.identifier}}
{{obj.title}}
diff --git a/templates/email/checking/shared_data_checked_team.html b/templates/email/checking/shared_data_checked_team.html index a92f4334..d64ff4b7 100644 --- a/templates/email/checking/shared_data_checked_team.html +++ b/templates/email/checking/shared_data_checked_team.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been checked' %}
- {{obj.identifier}} + {{obj.identifier}}
{{obj.title}}
diff --git a/templates/email/other/deduction_changed.html b/templates/email/other/deduction_changed.html index f9762ef8..652a09a8 100644 --- a/templates/email/other/deduction_changed.html +++ b/templates/email/other/deduction_changed.html @@ -10,6 +10,7 @@
{% translate 'a deduction of this eco account has changed:' %}
+ {{obj.identifier}}
diff --git a/templates/email/other/deduction_changed_team.html b/templates/email/other/deduction_changed_team.html index 75b39324..c8489bcc 100644 --- a/templates/email/other/deduction_changed_team.html +++ b/templates/email/other/deduction_changed_team.html @@ -10,6 +10,7 @@
{% translate 'a deduction of this eco account has changed:' %}
+ {{obj.identifier}}
diff --git a/templates/email/recording/shared_data_recorded.html b/templates/email/recording/shared_data_recorded.html index 4b18e3ee..959e94e6 100644 --- a/templates/email/recording/shared_data_recorded.html +++ b/templates/email/recording/shared_data_recorded.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been recorded' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"
diff --git a/templates/email/recording/shared_data_recorded_team.html b/templates/email/recording/shared_data_recorded_team.html index 3f508c47..23e9e8e6 100644 --- a/templates/email/recording/shared_data_recorded_team.html +++ b/templates/email/recording/shared_data_recorded_team.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been recorded' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"
diff --git a/templates/email/recording/shared_data_unrecorded.html b/templates/email/recording/shared_data_unrecorded.html index 77300f97..bb37feaa 100644 --- a/templates/email/recording/shared_data_unrecorded.html +++ b/templates/email/recording/shared_data_unrecorded.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been unrecorded' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"
diff --git a/templates/email/recording/shared_data_unrecorded_team.html b/templates/email/recording/shared_data_unrecorded_team.html index c4aaaf97..ac094982 100644 --- a/templates/email/recording/shared_data_unrecorded_team.html +++ b/templates/email/recording/shared_data_unrecorded_team.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been unrecorded' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"
diff --git a/templates/email/resubmission/resubmission.html b/templates/email/resubmission/resubmission.html index 09b40e77..5efbf885 100644 --- a/templates/email/resubmission/resubmission.html +++ b/templates/email/resubmission/resubmission.html @@ -2,7 +2,7 @@

{% trans 'Resubmission' %}

-

{{obj.identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{resubmission.user.username}}, diff --git a/templates/email/sharing/shared_access_given.html b/templates/email/sharing/shared_access_given.html index 472d3c9e..1f2a1a60 100644 --- a/templates/email/sharing/shared_access_given.html +++ b/templates/email/sharing/shared_access_given.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been shared with you' %}
- {{obj.identifier}} +

{{obj.identifier}}


"{{obj.title}}"
diff --git a/templates/email/sharing/shared_access_given_team.html b/templates/email/sharing/shared_access_given_team.html index 608f27f9..b92663e4 100644 --- a/templates/email/sharing/shared_access_given_team.html +++ b/templates/email/sharing/shared_access_given_team.html @@ -10,7 +10,7 @@
{% trans 'the following dataset has just been shared with your team' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"
diff --git a/templates/email/sharing/shared_access_removed.html b/templates/email/sharing/shared_access_removed.html index 2dde1492..7674b155 100644 --- a/templates/email/sharing/shared_access_removed.html +++ b/templates/email/sharing/shared_access_removed.html @@ -10,7 +10,7 @@
{% trans 'your shared access, including editing, has been revoked for the dataset ' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"
diff --git a/templates/email/sharing/shared_access_removed_team.html b/templates/email/sharing/shared_access_removed_team.html index 76afa230..e04c86c3 100644 --- a/templates/email/sharing/shared_access_removed_team.html +++ b/templates/email/sharing/shared_access_removed_team.html @@ -10,7 +10,7 @@
{% trans 'your teams shared access, including editing, has been revoked for the dataset ' %}
- {{obj.identifier}} + {{obj.identifier}}
"{{obj.title}}"