Mail links
* adds direct object links into mail templates * refactors transferring app-model identification data from fore- to background (celery) properly
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user