# 63 Mail celery

* moves mail sending to celery worker using shared_task in konova/tasks.py
* adds mail sending for shared access given
* adds UserNotification settings checks for mail sending
* adds/updates translations
This commit is contained in:
2022-01-12 14:51:50 +01:00
parent dbf32f3138
commit 17dc3f7537
7 changed files with 147 additions and 20 deletions

View File

@@ -11,7 +11,7 @@ from abc import abstractmethod
from django.contrib import messages
from konova.tasks import celery_send_mail_shared_access_removed
from konova.tasks import celery_send_mail_shared_access_removed, celery_send_mail_shared_access_given
from user.models import User
from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpRequest
@@ -416,8 +416,14 @@ class ShareableObjectMixin(models.Model):
removed_users = self.users.all().exclude(
id__in=accessing_users
).values("id")
# Send mails
for user in removed_users:
celery_send_mail_shared_access_removed.delay(self.identifier, user["id"])
for user in new_accessing_users:
celery_send_mail_shared_access_given.delay(self.identifier, user)
# Set new shared users
self.share_with_list(users)

View File

@@ -22,4 +22,11 @@ def celery_update_parcels(geometry_id: str, recheck: bool = True):
def celery_send_mail_shared_access_removed(obj_identifier, user_id):
from user.models import User
user = User.objects.get(id=user_id)
user.send_mail_shared_access_removed(obj_identifier)
user.send_mail_shared_access_removed(obj_identifier)
@shared_task
def celery_send_mail_shared_access_given(obj_identifier, user_id):
from user.models import User
user = User.objects.get(id=user_id)
user.send_mail_shared_access_given(obj_identifier)

View File

@@ -53,7 +53,7 @@ class Mailer:
""" Send a mail if user has no access to the object anymore
Args:
obj ():
obj_identifier (str): The object identifier
Returns:
@@ -71,3 +71,25 @@ class Mailer:
msg
)
def send_mail_shared_access_given(self, obj_identifier, user):
""" Send a mail if user just got access to the object
Args:
obj_identifier (str): The object identifier
Returns:
"""
context = {
"user": user,
"obj_identifier": obj_identifier,
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
}
msg = render_to_string("email/sharing/shared_access_given.html", context)
user_mail_address = [user.email]
self.send(
user_mail_address,
_("{} - Shared access given").format(obj_identifier),
msg
)