From 08467e5619245ebf1760a4d0dfee1427cd7ffa2e Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 11 Dec 2023 12:06:33 +0100 Subject: [PATCH 1/3] Object mailing restructred * restructures object info mail sending --- compensation/models/eco_account.py | 4 +- konova/models/object.py | 22 +-- konova/tasks.py | 70 +++++---- konova/utils/mailer.py | 148 +++++++----------- .../email/checking/shared_data_checked.html | 6 +- .../checking/shared_data_checked_team.html | 6 +- .../email/deleting/shared_data_deleted.html | 6 +- .../deleting/shared_data_deleted_team.html | 6 +- templates/email/other/deduction_changed.html | 2 +- .../email/other/deduction_changed_team.html | 2 +- .../email/recording/shared_data_recorded.html | 6 +- .../recording/shared_data_recorded_team.html | 6 +- .../recording/shared_data_unrecorded.html | 6 +- .../shared_data_unrecorded_team.html | 6 +- .../email/resubmission/resubmission.html | 2 +- .../email/sharing/shared_access_given.html | 6 +- .../sharing/shared_access_given_team.html | 6 +- .../email/sharing/shared_access_removed.html | 6 +- .../sharing/shared_access_removed_team.html | 6 +- user/models/team.py | 49 +++--- user/models/user.py | 49 +++--- 21 files changed, 196 insertions(+), 224 deletions(-) diff --git a/compensation/models/eco_account.py b/compensation/models/eco_account.py index afebfbe..a321ff9 100644 --- a/compensation/models/eco_account.py +++ b/compensation/models/eco_account.py @@ -161,12 +161,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.identifier, self.title, user_id, data_change) + celery_send_mail_deduction_changed.delay(self.id, self.__class__, 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.identifier, self.title, team_id, data_change) + celery_send_mail_deduction_changed_team.delay(self.id, self.__class__, team_id, data_change) def update_deductable_rest(self): """ diff --git a/konova/models/object.py b/konova/models/object.py index 52732a8..6665dd3 100644 --- a/konova/models/object.py +++ b/konova/models/object.py @@ -123,7 +123,7 @@ class DeletableObjectMixin(models.Model): # 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.identifier, self.title, team_id, municipals_names) + celery_send_mail_shared_data_deleted_team.delay(self.id, self.__class__, team_id, municipals_names) self.save() @@ -256,10 +256,10 @@ class RecordableObjectMixin(models.Model): municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for user_id in shared_users: - celery_send_mail_shared_data_unrecorded.delay(self.identifier, self.title, user_id, municipals_names) + celery_send_mail_shared_data_unrecorded.delay(self.id, self.__class__, user_id, municipals_names) for team_id in shared_teams: - celery_send_mail_shared_data_unrecorded_team.delay(self.identifier, self.title, team_id, municipals_names) + celery_send_mail_shared_data_unrecorded_team.delay(self.id, self.__class__, team_id, municipals_names) return action @@ -287,10 +287,10 @@ class RecordableObjectMixin(models.Model): municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for user_id in shared_users: - celery_send_mail_shared_data_recorded.delay(self.identifier, self.title, user_id, municipals_names) + celery_send_mail_shared_data_recorded.delay(self.id, self.__class__, user_id, municipals_names) for team_id in shared_teams: - celery_send_mail_shared_data_recorded_team.delay(self.identifier, self.title, team_id, municipals_names) + celery_send_mail_shared_data_recorded_team.delay(self.id, self.__class__, team_id, municipals_names) return action @@ -366,12 +366,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.identifier, self.title, user_id, municipals_names) + celery_send_mail_shared_data_checked.delay(self.id, self.__class__, user_id, municipals_names) # 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.identifier, self.title, team_id, municipals_names) + celery_send_mail_shared_data_checked_team.delay(self.id, self.__class__, team_id, municipals_names) self.log.add(action) return action @@ -556,9 +556,9 @@ class ShareableObjectMixin(models.Model): municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for team_id in new_teams: - celery_send_mail_shared_access_given_team.delay(self.identifier, self.title, team_id, municipals_names) + celery_send_mail_shared_access_given_team.delay(self.id, self.__class__, team_id, municipals_names) for team_id in removed_teams: - celery_send_mail_shared_access_removed_team.delay(self.identifier, self.title, team_id, municipals_names) + celery_send_mail_shared_access_removed_team.delay(self.id, self.__class__, team_id, municipals_names) self.share_with_team_list(accessing_teams) @@ -586,9 +586,9 @@ class ShareableObjectMixin(models.Model): municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) # Send mails for user_id in removed_users: - celery_send_mail_shared_access_removed.delay(self.identifier, self.title, user_id, municipals_names) + celery_send_mail_shared_access_removed(self.id, self.__class__, user_id, municipals_names) for user_id in new_users: - celery_send_mail_shared_access_given.delay(self.identifier, self.title, user_id, municipals_names) + celery_send_mail_shared_access_given(self.id, self.__class__, user_id, municipals_names) # Set new shared users self.share_with_user_list(accessing_users) diff --git a/konova/tasks.py b/konova/tasks.py index ab9e6af..417f5ca 100644 --- a/konova/tasks.py +++ b/konova/tasks.py @@ -25,101 +25,115 @@ def celery_update_parcels(geometry_id: str, recheck: bool = True): @shared_task -def celery_send_mail_shared_access_removed(obj_identifier, obj_title=None, user_id=None, municipals_names=[]): +def celery_send_mail_shared_access_removed(obj_id, obj_class, user_id=None, municipals_names=[]): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_access_removed(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_shared_access_removed(obj, municipals_names) @shared_task -def celery_send_mail_shared_access_given(obj_identifier, obj_title=None, user_id=None, municipals_names=[]): +def celery_send_mail_shared_access_given(obj_id, obj_class, user_id=None, municipals_names=[]): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_access_given(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_shared_access_given(obj, municipals_names) @shared_task -def celery_send_mail_shared_access_removed_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]): +def celery_send_mail_shared_access_removed_team(obj_id, obj_class, team_id=None, municipals_names=[]): from user.models import Team team = Team.objects.get(id=team_id) - team.send_mail_shared_access_removed(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_shared_access_removed(obj, municipals_names) @shared_task -def celery_send_mail_shared_access_given_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]): +def celery_send_mail_shared_access_given_team(obj_id, obj_class, team_id=None, municipals_names=[]): from user.models import Team team = Team.objects.get(id=team_id) - team.send_mail_shared_access_given_team(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_shared_access_given_team(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_recorded(obj_identifier, obj_title=None, user_id=None, municipals_names=[]): +def celery_send_mail_shared_data_recorded(obj_id, obj_class, user_id=None, municipals_names=[]): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_data_recorded(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_shared_data_recorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_unrecorded(obj_identifier, obj_title=None, user_id=None, municipals_names=[]): +def celery_send_mail_shared_data_unrecorded(obj_id, obj_class, user_id=None, municipals_names=[]): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_data_unrecorded(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_shared_data_unrecorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_recorded_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]): +def celery_send_mail_shared_data_recorded_team(obj_id, obj_class, team_id=None, municipals_names=[]): from user.models import Team team = Team.objects.get(id=team_id) - team.send_mail_shared_data_recorded(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_shared_data_recorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_unrecorded_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]): +def celery_send_mail_shared_data_unrecorded_team(obj_id, obj_class, team_id=None, municipals_names=[]): from user.models import Team team = Team.objects.get(id=team_id) - team.send_mail_shared_data_unrecorded(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_shared_data_unrecorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_deleted(obj_identifier, obj_title=None, user_id=None, municipals_names=[]): +def celery_send_mail_shared_data_deleted(obj_id, obj_class, user_id=None, municipals_names=[]): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_data_deleted(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_shared_data_deleted(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_checked(obj_identifier, obj_title=None, user_id=None, municipals_names=[]): +def celery_send_mail_shared_data_checked(obj_id, obj_class, user_id=None, municipals_names=[]): from user.models import User user = User.objects.get(id=user_id) - user.send_mail_shared_data_checked(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_shared_data_checked(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_deleted_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]): +def celery_send_mail_shared_data_deleted_team(obj_id, obj_class, team_id=None, municipals_names=[]): from user.models import Team team = Team.objects.get(id=team_id) - team.send_mail_shared_data_deleted(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_shared_data_deleted(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_checked_team(obj_identifier, obj_title=None, team_id=None, municipals_names=[]): +def celery_send_mail_shared_data_checked_team(obj_id, obj_class, team_id=None, municipals_names=[]): from user.models import Team team = Team.objects.get(id=team_id) - team.send_mail_shared_data_checked(obj_identifier, obj_title, municipals_names) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_shared_data_checked(obj, municipals_names) @shared_task -def celery_send_mail_deduction_changed_team(obj_identifier, obj_title=None, team_id=None, data_changes=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) - team.send_mail_deduction_changed(obj_identifier, obj_title, data_changes) + obj = obj_class.objects.get(id=obj_id) + team.send_mail_deduction_changed(obj, data_changes) @shared_task -def celery_send_mail_deduction_changed(obj_identifier, obj_title=None, user_id=None, data_changes=None): +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) - user.send_mail_deduction_changed(obj_identifier, obj_title, data_changes) + obj = obj_class.objects.get(id=obj_id) + user.send_mail_deduction_changed(obj, data_changes) @shared_task diff --git a/konova/utils/mailer.py b/konova/utils/mailer.py index faf21fd..d60f3b9 100644 --- a/konova/utils/mailer.py +++ b/konova/utils/mailer.py @@ -45,12 +45,11 @@ class Mailer: auth_password=self.auth_password ) - def send_mail_shared_access_removed(self, obj_identifier, obj_title, user, municipals_names): + def send_mail_shared_access_removed(self, obj, user, municipals_names): """ Send a mail if user has no access to the object anymore Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object user (User): Related user municipals_names (iterable): List of municipals of the entry @@ -59,8 +58,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -68,16 +66,15 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Shared access removed").format(obj_identifier), + _("{} - Shared access removed").format(obj.identifier), msg ) - def send_mail_shared_access_given(self, obj_identifier, obj_title, user, municipals_names): + def send_mail_shared_access_given(self, obj, user, municipals_names): """ Send a mail if user just got access to the object Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object user (User): The related user municipals_names (iterable): List of municipals for this entry @@ -86,8 +83,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -95,16 +91,15 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Shared access given").format(obj_identifier), + _("{} - Shared access given").format(obj.identifier), msg ) - def send_mail_shared_access_given_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names): + def send_mail_shared_access_given_team(self, obj, team, users_to_notify, municipals_names): """ Send a mail if a team just got access to the object Args: - obj_identifier (str): The object identifier - obj_title (str): Title of the main object + obj (): The object team (Team): Team to be notified users_to_notify (QueryDict): Contains the team users which should be notified municipals_names (iterable): List of municipals for this entry @@ -114,8 +109,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -123,16 +117,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Shared access given").format(obj_identifier), + _("{} - Shared access given").format(obj.identifier), msg ) - def send_mail_shared_access_removed_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names): + def send_mail_shared_access_removed_team(self, obj, team, users_to_notify, municipals_names): """ Send a mail if a team just lost access to the object Args: - obj_identifier (str): The object identifier - obj_title (str): Title of the main object + obj (): The object team (Team): Team to be notified users_to_notify (QueryDict): Contains the team users which should be notified municipals_names (iterable): List of municipals for this entry @@ -142,8 +135,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -151,16 +143,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Shared access removed").format(obj_identifier), + _("{} - Shared access removed").format(obj.identifier), msg ) - def send_mail_shared_data_unrecorded_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names): + def send_mail_shared_data_unrecorded_team(self,obj, team, users_to_notify, municipals_names): """ Send a mail if data has just been unrecorded Args: - obj_identifier (str): The object identifier - obj_title (str): Title of the main object + obj (): The object team (Team): Team to be notified users_to_notify (QueryDict): Contains the team users which should be notified municipals_names (iterable): List of municipals for this entry @@ -170,8 +161,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -179,16 +169,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Shared data unrecorded").format(obj_identifier), + _("{} - Shared data unrecorded").format(obj.identifier), msg ) - def send_mail_shared_data_recorded_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names): + def send_mail_shared_data_recorded_team(self, obj, team, users_to_notify, municipals_names): """ Send a mail if data has just been recorded Args: - obj_identifier (str): The object identifier - obj_title (str): Title of the main object + obj (): The object team (Team): Team to be notified users_to_notify (QueryDict): Contains the team users which should be notified municipals_names (iterable): List of municipals for this entry @@ -198,8 +187,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -207,16 +195,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Shared data recorded").format(obj_identifier), + _("{} - Shared data recorded").format(obj.identifier), msg ) - def send_mail_shared_data_checked_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names): + def send_mail_shared_data_checked_team(self, obj, team, users_to_notify, municipals_names): """ Send a mail if data has just been checked Args: - obj_identifier (str): The object identifier - obj_title (str): Title of the main object + obj (): The object team (Team): Team to be notified users_to_notify (QueryDict): Contains the team users which should be notified municipals_names (iterable): List of municipals for this entry @@ -226,8 +213,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -235,16 +221,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Shared data checked").format(obj_identifier), + _("{} - Shared data checked").format(obj.identifier), msg ) - def send_mail_deduction_changed_team(self, obj_identifier, obj_title, team, data_changes, users_to_notify): + def send_mail_deduction_changed_team(self, obj, team, data_changes, users_to_notify): """ Send a mail if deduction has been changed Args: - obj_identifier (str): Identifier of the main object - obj_title (str): Title of the main object + obj (): The object team (Team): Team to be notified data_changes (dict): Contains the old|new changes of the deduction changes users_to_notify (QueryDict): Contains the team users which should be notified @@ -253,8 +238,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, "data_changes": data_changes, } @@ -262,16 +246,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Deduction changed").format(obj_identifier), + _("{} - Deduction changed").format(obj.identifier), msg ) - def send_mail_shared_data_deleted_team(self, obj_identifier, obj_title, team, users_to_notify, municipals_names): + def send_mail_shared_data_deleted_team(self, obj, team, users_to_notify, municipals_names): """ Send a mail if data has just been deleted Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object team (Team): The related team users_to_notify (QuerySet): Contains team users who want to be notified municipals_names (iterable): List of municipals for the entry @@ -281,8 +264,7 @@ class Mailer: """ context = { "team": team, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -290,16 +272,15 @@ class Mailer: user_mail_address = users_to_notify.values_list("email", flat=True) self.send( user_mail_address, - _("{} - Shared data deleted").format(obj_identifier), + _("{} - Shared data deleted").format(obj.identifier), msg ) - def send_mail_shared_data_recorded(self, obj_identifier, obj_title, user, municipals_names): + def send_mail_shared_data_recorded(self, obj, user, municipals_names): """ Send a mail if the user's shared data has just been unrecorded Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object user (User): The related user municipals_names (iterable): List of municipals for this entry @@ -308,8 +289,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -317,16 +297,15 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Shared data recorded").format(obj_identifier), + _("{} - Shared data recorded").format(obj.identifier), msg ) - def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, user, municipals_names): + def send_mail_shared_data_unrecorded(self, obj, user, municipals_names): """ Send a mail if the user's shared data has just been unrecorded Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object user (User): The related user municipals_names (iterable): List of municipals for this entry @@ -335,8 +314,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -344,16 +322,15 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Shared data unrecorded").format(obj_identifier), + _("{} - Shared data unrecorded").format(obj.identifier), msg ) - def send_mail_shared_data_deleted(self, obj_identifier, obj_title, user, municipals_names): + def send_mail_shared_data_deleted(self, obj, user, municipals_names): """ Send a mail if shared data has just been deleted Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object user (User): The related user municipals_names (iterable): List of municipals for this entry @@ -362,8 +339,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -371,16 +347,15 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Shared data deleted").format(obj_identifier), + _("{} - Shared data deleted").format(obj.identifier), msg ) - def send_mail_shared_data_checked(self, obj_identifier, obj_title, user, municipals_names): + def send_mail_shared_data_checked(self, obj, user, municipals_names): """ Send a mail if shared data just has been checked Args: - obj_identifier (str): The object identifier - obj_title (str): The object title + obj (): The object user (User): The related user municipals_names (iterable): List of municipals for this entry @@ -389,8 +364,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, } @@ -398,16 +372,15 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Shared data checked").format(obj_identifier), + _("{} - Shared data checked").format(obj.identifier), msg ) - def send_mail_deduction_changed(self, obj_identifier, obj_title, user, data_changes): + def send_mail_deduction_changed(self, obj, user, data_changes): """ Send a mail if deduction has been changed Args: - obj_identifier (str): Identifier of the main object - obj_title (str): Title of the main object + obj (): The object user (User): User to be notified data_changes (dict): Contains the old|new changes of the deduction changes @@ -417,8 +390,7 @@ class Mailer: """ context = { "user": user, - "obj_identifier": obj_identifier, - "obj_title": obj_title, + "obj": obj, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, "data_changes": data_changes, } @@ -426,7 +398,7 @@ class Mailer: user_mail_address = [user.email] self.send( user_mail_address, - _("{} - Deduction changed").format(obj_identifier), + _("{} - Deduction changed").format(obj.identifier), msg ) @@ -451,11 +423,11 @@ class Mailer: msg ) - def send_mail_resubmission(self, obj_identifier, resubmission, municipals_names): + def send_mail_resubmission(self, obj, resubmission, municipals_names): """ Send a resubmission mail for a user Args: - obj_identifier (str): The (resubmitted) object's identifier + obj (): The (resubmitted) object resubmission (Resubmission): The resubmission municipals_names (iterable): List of municipals for this entry @@ -463,7 +435,7 @@ class Mailer: """ context = { - "obj_identifier": obj_identifier, + "obj": obj, "resubmission": resubmission, "municipals_names": municipals_names, "EMAIL_REPLY_TO": EMAIL_REPLY_TO, @@ -472,7 +444,7 @@ class Mailer: user_mail_address = [resubmission.user.email] self.send( user_mail_address, - _("Resubmission - {}").format(obj_identifier), + _("Resubmission - {}").format(obj.identifier), msg ) diff --git a/templates/email/checking/shared_data_checked.html b/templates/email/checking/shared_data_checked.html index 258315d..665a2a2 100644 --- a/templates/email/checking/shared_data_checked.html +++ b/templates/email/checking/shared_data_checked.html @@ -2,7 +2,7 @@

{% trans 'Shared data checked' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{user.username}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been checked' %}
- {{obj_identifier}} + {{obj.identifier}}
- {{obj_title}} + {{obj.title}}

{% trans 'This entry is located in' %} diff --git a/templates/email/checking/shared_data_checked_team.html b/templates/email/checking/shared_data_checked_team.html index 6d02df5..a92f433 100644 --- a/templates/email/checking/shared_data_checked_team.html +++ b/templates/email/checking/shared_data_checked_team.html @@ -2,7 +2,7 @@

{% trans 'Shared data checked' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been checked' %}
- {{obj_identifier}} + {{obj.identifier}}
- {{obj_title}} + {{obj.title}}

{% trans 'This entry is located in' %} diff --git a/templates/email/deleting/shared_data_deleted.html b/templates/email/deleting/shared_data_deleted.html index 491e70b..243a3e2 100644 --- a/templates/email/deleting/shared_data_deleted.html +++ b/templates/email/deleting/shared_data_deleted.html @@ -2,7 +2,7 @@

{% trans 'Shared data deleted' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{user.username}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been deleted' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/deleting/shared_data_deleted_team.html b/templates/email/deleting/shared_data_deleted_team.html index ba1328d..c546c31 100644 --- a/templates/email/deleting/shared_data_deleted_team.html +++ b/templates/email/deleting/shared_data_deleted_team.html @@ -2,7 +2,7 @@

{% trans 'Shared data deleted' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been deleted' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/other/deduction_changed.html b/templates/email/other/deduction_changed.html index 8129f6b..f9762ef 100644 --- a/templates/email/other/deduction_changed.html +++ b/templates/email/other/deduction_changed.html @@ -2,7 +2,7 @@

{% translate 'Deduction changed' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% translate 'Hello ' %} {{user.username}}, diff --git a/templates/email/other/deduction_changed_team.html b/templates/email/other/deduction_changed_team.html index babf36c..75b3932 100644 --- a/templates/email/other/deduction_changed_team.html +++ b/templates/email/other/deduction_changed_team.html @@ -2,7 +2,7 @@

{% translate 'Deduction changed' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, diff --git a/templates/email/recording/shared_data_recorded.html b/templates/email/recording/shared_data_recorded.html index 71f92f7..4b18e3e 100644 --- a/templates/email/recording/shared_data_recorded.html +++ b/templates/email/recording/shared_data_recorded.html @@ -2,7 +2,7 @@

{% trans 'Shared data recorded' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{user.username}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been recorded' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/recording/shared_data_recorded_team.html b/templates/email/recording/shared_data_recorded_team.html index 1c84674..3f508c4 100644 --- a/templates/email/recording/shared_data_recorded_team.html +++ b/templates/email/recording/shared_data_recorded_team.html @@ -2,7 +2,7 @@

{% trans 'Shared data recorded' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been recorded' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/recording/shared_data_unrecorded.html b/templates/email/recording/shared_data_unrecorded.html index c6c7b0c..77300f9 100644 --- a/templates/email/recording/shared_data_unrecorded.html +++ b/templates/email/recording/shared_data_unrecorded.html @@ -2,7 +2,7 @@

{% trans 'Shared data unrecorded' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{user.username}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been unrecorded' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/recording/shared_data_unrecorded_team.html b/templates/email/recording/shared_data_unrecorded_team.html index 6ac1d75..c4aaaf9 100644 --- a/templates/email/recording/shared_data_unrecorded_team.html +++ b/templates/email/recording/shared_data_unrecorded_team.html @@ -2,7 +2,7 @@

{% trans 'Shared data unrecorded' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been unrecorded' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/resubmission/resubmission.html b/templates/email/resubmission/resubmission.html index 0dcc32c..09b40e7 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 785e602..472d3c9 100644 --- a/templates/email/sharing/shared_access_given.html +++ b/templates/email/sharing/shared_access_given.html @@ -2,7 +2,7 @@

{% trans 'Access shared' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{user.username}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been shared with you' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/sharing/shared_access_given_team.html b/templates/email/sharing/shared_access_given_team.html index 0f23bc5..608f27f 100644 --- a/templates/email/sharing/shared_access_given_team.html +++ b/templates/email/sharing/shared_access_given_team.html @@ -2,7 +2,7 @@

{% trans 'Access shared' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, @@ -10,9 +10,9 @@
{% trans 'the following dataset has just been shared with your team' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/sharing/shared_access_removed.html b/templates/email/sharing/shared_access_removed.html index f1845a3..2dde149 100644 --- a/templates/email/sharing/shared_access_removed.html +++ b/templates/email/sharing/shared_access_removed.html @@ -2,7 +2,7 @@

{% trans 'Shared access removed' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello ' %} {{user.username}}, @@ -10,9 +10,9 @@
{% trans 'your shared access, including editing, has been revoked for the dataset ' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/templates/email/sharing/shared_access_removed_team.html b/templates/email/sharing/shared_access_removed_team.html index ede0520..76afa23 100644 --- a/templates/email/sharing/shared_access_removed_team.html +++ b/templates/email/sharing/shared_access_removed_team.html @@ -2,7 +2,7 @@

{% trans 'Shared access removed' %}

-

{{obj_identifier}}

+

{{obj.identifier}}


{% trans 'Hello team' %} {{team.name}}, @@ -10,9 +10,9 @@
{% trans 'your teams shared access, including editing, has been revoked for the dataset ' %}
- {{obj_identifier}} + {{obj.identifier}}
- "{{obj_title}}" + "{{obj.title}}"

{% trans 'This entry is located in' %} diff --git a/user/models/team.py b/user/models/team.py index 0ff18a8..335e894 100644 --- a/user/models/team.py +++ b/user/models/team.py @@ -31,12 +31,11 @@ class Team(UuidModel, DeletableObjectMixin): self.deleted = delete_action self.save() - def send_mail_shared_access_given_team(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_access_given_team(self, obj, municipals_names): """ Sends a mail to the team members in case of given shared access Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (str): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -46,14 +45,13 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_GAINED.value] ) - mailer.send_mail_shared_access_given_team(obj_identifier, obj_title, self, users_to_notify, municipals_names) + mailer.send_mail_shared_access_given_team(obj, self, users_to_notify, municipals_names) - def send_mail_shared_access_removed(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_access_removed(self, obj, municipals_names): """ Sends a mail to the team members in case of removed shared access Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -63,14 +61,13 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_REMOVED.value] ) - mailer.send_mail_shared_access_removed_team(obj_identifier, obj_title, self, users_to_notify, municipals_names) + mailer.send_mail_shared_access_removed_team(obj, self, users_to_notify, municipals_names) - def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_unrecorded(self, obj, municipals_names): """ Sends a mail to the team members in case of unrecorded data Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -80,14 +77,13 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED.value] ) - mailer.send_mail_shared_data_unrecorded_team(obj_identifier, obj_title, self, users_to_notify, municipals_names) + mailer.send_mail_shared_data_unrecorded_team(obj, self, users_to_notify, municipals_names) - def send_mail_shared_data_recorded(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_recorded(self, obj, municipals_names): """ Sends a mail to the team members in case of unrecorded data Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -97,14 +93,13 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_RECORDED.value] ) - mailer.send_mail_shared_data_recorded_team(obj_identifier, obj_title, self, users_to_notify, municipals_names) + mailer.send_mail_shared_data_recorded_team(obj, self, users_to_notify, municipals_names) - def send_mail_shared_data_checked(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_checked(self, obj, municipals_names): """ Sends a mail to the team members in case of checked data Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -114,14 +109,13 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_CHECKED.value] ) - mailer.send_mail_shared_data_checked_team(obj_identifier, obj_title, self, users_to_notify, municipals_names) + mailer.send_mail_shared_data_checked_team(obj, self, users_to_notify, municipals_names) - def send_mail_deduction_changed(self, obj_identifier, obj_title, data_changes): + def send_mail_deduction_changed(self, obj, data_changes): """ Sends a mail to the team members in case of changed deduction values Args: - obj_identifier (str): Identifier of the main object - obj_title (str): Title of the main object + obj (): The main object data_changes (dict): Contains the old|new changes of the deduction changes Returns: @@ -131,14 +125,13 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_DEDUCTION_CHANGES.value] ) - mailer.send_mail_deduction_changed_team(obj_identifier, obj_title, self, data_changes, users_to_notify) + mailer.send_mail_deduction_changed_team(obj, self, data_changes, users_to_notify) - def send_mail_shared_data_deleted(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_deleted(self, obj, municipals_names): """ Sends a mail to the team members in case of deleted data Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -148,7 +141,7 @@ class Team(UuidModel, DeletableObjectMixin): users_to_notify = self.users.filter( notifications__in=[UserNotificationEnum.NOTIFY_ON_SHARED_DATA_DELETED.value] ) - mailer.send_mail_shared_data_deleted_team(obj_identifier, obj_title, self, users_to_notify, municipals_names) + mailer.send_mail_shared_data_deleted_team(obj, self, users_to_notify, municipals_names) def remove_user(self, user): """ Removes a user from the team diff --git a/user/models/user.py b/user/models/user.py index c01dbc4..dde88dc 100644 --- a/user/models/user.py +++ b/user/models/user.py @@ -83,12 +83,11 @@ class User(AbstractUser): name=group ) - def send_mail_shared_access_removed(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_access_removed(self, obj, municipals_names): """ Sends a mail to the user in case of removed shared access Args: - obj_identifier (): - obj_title (): + obj (): municipals_names (): Returns: @@ -97,14 +96,13 @@ class User(AbstractUser): notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_REMOVED) if notification_set: mailer = Mailer() - mailer.send_mail_shared_access_removed(obj_identifier, obj_title, self, municipals_names) + mailer.send_mail_shared_access_removed(obj, self, municipals_names) - def send_mail_shared_access_given(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_access_given(self, obj, municipals_names): """ Sends a mail to the user in case of given shared access Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -113,14 +111,13 @@ class User(AbstractUser): notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_ACCESS_GAINED) if notification_set: mailer = Mailer() - mailer.send_mail_shared_access_given(obj_identifier, obj_title, self, municipals_names) + mailer.send_mail_shared_access_given(obj, self, municipals_names) - def send_mail_shared_data_recorded(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_recorded(self, obj, municipals_names): """ Sends a mail to the user in case of shared data has been recorded Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -129,14 +126,13 @@ class User(AbstractUser): 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, obj_title, self, municipals_names) + mailer.send_mail_shared_data_recorded(obj, self, municipals_names) - def send_mail_shared_data_unrecorded(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_unrecorded(self, obj, municipals_names): """ Sends a mail to the user in case of shared data has been unrecorded Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -145,14 +141,13 @@ class User(AbstractUser): 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, obj_title, self, municipals_names) + mailer.send_mail_shared_data_unrecorded(obj, self, municipals_names) - def send_mail_shared_data_deleted(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_deleted(self, obj, municipals_names): """ Sends a mail to the user in case of shared data has been deleted Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -161,14 +156,13 @@ class User(AbstractUser): 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, obj_title, self, municipals_names) + mailer.send_mail_shared_data_deleted(obj, self, municipals_names) - def send_mail_shared_data_checked(self, obj_identifier, obj_title, municipals_names): + def send_mail_shared_data_checked(self, obj, municipals_names): """ Sends a mail to the user in case of shared data has been deleted Args: - obj_identifier (str): The entry identifier - obj_title (str): The entry title + obj (): The entry municipals_names (iterable): List of municipals for this entry Returns: @@ -177,14 +171,13 @@ class User(AbstractUser): notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_SHARED_DATA_CHECKED) if notification_set: mailer = Mailer() - mailer.send_mail_shared_data_checked(obj_identifier, obj_title, self, municipals_names) + mailer.send_mail_shared_data_checked(obj, self, municipals_names) - def send_mail_deduction_changed(self, obj_identifier, obj_title, data_changes): + def send_mail_deduction_changed(self, obj, data_changes): """ Sends a mail to the user in case of a changed deduction Args: - obj_identifier (str): Identifier of the main object - obj_title (str): Title of the main object + obj (): The object data_changes (dict): Contains the old|new changes of the deduction changes Returns: @@ -193,7 +186,7 @@ class User(AbstractUser): notification_set = self.is_notification_setting_set(UserNotificationEnum.NOTIFY_ON_DEDUCTION_CHANGES) if notification_set: mailer = Mailer() - mailer.send_mail_deduction_changed(obj_identifier, obj_title, self, data_changes) + mailer.send_mail_deduction_changed(obj, self, data_changes) def get_API_token(self): """ Getter for an API token From 11bbf7d9ec9421868357b62b1ac18fa608e322b7 Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 11 Dec 2023 12:12:19 +0100 Subject: [PATCH 2/3] Municipal calculation to background * moves municipal names fetching from fore- to background for mail sending --- konova/models/object.py | 34 +++++++++++------------------ konova/tasks.py | 48 ++++++++++++++++++++++++++++++----------- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/konova/models/object.py b/konova/models/object.py index 6665dd3..db38ff4 100644 --- a/konova/models/object.py +++ b/konova/models/object.py @@ -116,14 +116,13 @@ class DeletableObjectMixin(models.Model): if send_mail: # Send mail shared_users = self.shared_users.values_list("id", flat=True) - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for user_id in shared_users: - celery_send_mail_shared_data_deleted.delay(self.identifier, self.title, user_id, municipals_names) + celery_send_mail_shared_data_deleted.delay(self.identifier, self.title, 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, municipals_names) + celery_send_mail_shared_data_deleted_team.delay(self.id, self.__class__, team_id) self.save() @@ -253,13 +252,12 @@ class RecordableObjectMixin(models.Model): shared_users = self.shared_users.values_list("id", flat=True) shared_teams = self.shared_teams.values_list("id", flat=True) - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for user_id in shared_users: - celery_send_mail_shared_data_unrecorded.delay(self.id, self.__class__, user_id, municipals_names) + celery_send_mail_shared_data_unrecorded.delay(self.id, self.__class__, user_id) for team_id in shared_teams: - celery_send_mail_shared_data_unrecorded_team.delay(self.id, self.__class__, team_id, municipals_names) + celery_send_mail_shared_data_unrecorded_team.delay(self.id, self.__class__, team_id) return action @@ -284,13 +282,12 @@ class RecordableObjectMixin(models.Model): shared_users = self.shared_users.values_list("id", flat=True) shared_teams = self.shared_teams.values_list("id", flat=True) - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for user_id in shared_users: - celery_send_mail_shared_data_recorded.delay(self.id, self.__class__, user_id, municipals_names) + celery_send_mail_shared_data_recorded.delay(self.id, self.__class__, user_id) for team_id in shared_teams: - celery_send_mail_shared_data_recorded_team.delay(self.id, self.__class__, team_id, municipals_names) + celery_send_mail_shared_data_recorded_team.delay(self.id, self.__class__, team_id) return action @@ -361,17 +358,15 @@ class CheckableObjectMixin(models.Model): self.checked = action self.save() - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) - # 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, municipals_names) + celery_send_mail_shared_data_checked.delay(self.id, self.__class__, 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, municipals_names) + celery_send_mail_shared_data_checked_team.delay(self.id, self.__class__, team_id) self.log.add(action) return action @@ -554,11 +549,10 @@ class ShareableObjectMixin(models.Model): id__in=shared_teams ).values_list("id", flat=True) - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for team_id in new_teams: - celery_send_mail_shared_access_given_team.delay(self.id, self.__class__, team_id, municipals_names) + celery_send_mail_shared_access_given_team.delay(self.id, self.__class__, team_id) for team_id in removed_teams: - celery_send_mail_shared_access_removed_team.delay(self.id, self.__class__, team_id, municipals_names) + celery_send_mail_shared_access_removed_team.delay(self.id, self.__class__, team_id) self.share_with_team_list(accessing_teams) @@ -583,12 +577,11 @@ class ShareableObjectMixin(models.Model): id__in=shared_users ).values_list("id", flat=True) - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) # Send mails for user_id in removed_users: - celery_send_mail_shared_access_removed(self.id, self.__class__, user_id, municipals_names) + celery_send_mail_shared_access_removed.delay(self.id, self.__class__, user_id) for user_id in new_users: - celery_send_mail_shared_access_given(self.id, self.__class__, user_id, municipals_names) + celery_send_mail_shared_access_given.delay(self.id, self.__class__, user_id) # Set new shared users self.share_with_user_list(accessing_users) @@ -650,9 +643,8 @@ class ShareableObjectMixin(models.Model): default_users.append(user) self.share_with_user_list(cleaned_users) - municipals_names = list(self.geometry.get_underlying_municipals().values_list("name", flat=True)) for user in default_users: - celery_send_mail_shared_access_removed.delay(self.identifier, self.title, user.id, municipals_names) + celery_send_mail_shared_access_removed.delay(self.id, self.__class__, user.id) class GeoReferencedMixin(models.Model): diff --git a/konova/tasks.py b/konova/tasks.py index 417f5ca..02f8d27 100644 --- a/konova/tasks.py +++ b/konova/tasks.py @@ -25,98 +25,122 @@ def celery_update_parcels(geometry_id: str, recheck: bool = True): @shared_task -def celery_send_mail_shared_access_removed(obj_id, obj_class, user_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) user.send_mail_shared_access_removed(obj, municipals_names) @shared_task -def celery_send_mail_shared_access_given(obj_id, obj_class, user_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) user.send_mail_shared_access_given(obj, municipals_names) @shared_task -def celery_send_mail_shared_access_removed_team(obj_id, obj_class, team_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) team.send_mail_shared_access_removed(obj, municipals_names) @shared_task -def celery_send_mail_shared_access_given_team(obj_id, obj_class, team_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) team.send_mail_shared_access_given_team(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_recorded(obj_id, obj_class, user_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) user.send_mail_shared_data_recorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_unrecorded(obj_id, obj_class, user_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) user.send_mail_shared_data_unrecorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_recorded_team(obj_id, obj_class, team_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) team.send_mail_shared_data_recorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_unrecorded_team(obj_id, obj_class, team_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) team.send_mail_shared_data_unrecorded(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_deleted(obj_id, obj_class, user_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) user.send_mail_shared_data_deleted(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_checked(obj_id, obj_class, user_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) user.send_mail_shared_data_checked(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_deleted_team(obj_id, obj_class, team_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) team.send_mail_shared_data_deleted(obj, municipals_names) @shared_task -def celery_send_mail_shared_data_checked_team(obj_id, obj_class, team_id=None, municipals_names=[]): +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 = obj_class.objects.get(id=obj_id) + + municipals_names = list(obj.geometry.get_underlying_municipals().values_list("name", flat=True)) team.send_mail_shared_data_checked(obj, municipals_names) From 8cdea88756f22b7e824be3d183d3f9eaf347be1f Mon Sep 17 00:00:00 2001 From: mpeltriaux Date: Mon, 11 Dec 2023 13:40:32 +0100 Subject: [PATCH 3/3] 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 86956b4..eaf8ccb 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 a321ff9..59ae060 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 d312c6a..5e86129 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 e607769..225dca5 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 db38ff4..e2acaeb 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 e5fc714..59ff0a0 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 906cafe..4638695 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 02f8d27..aa8a65b 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 2ec7f0f..622a8eb 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 665a2a2..2919538 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 a92f433..d64ff4b 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 f9762ef..652a09a 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 75b3932..c8489bc 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 4b18e3e..959e94e 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 3f508c4..23e9e8e 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 77300f9..bb37fea 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 c4aaaf9..ac09498 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 09b40e7..5efbf88 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 472d3c9..1f2a1a6 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 608f27f..b92663e 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 2dde149..7674b15 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 76afa23..e04c86c 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}}"