# 63 Mail background sending
* moves mail sending to background using celery
This commit is contained in:
@@ -10,6 +10,8 @@ import uuid
|
||||
from abc import abstractmethod
|
||||
|
||||
from django.contrib import messages
|
||||
|
||||
from konova.tasks import celery_send_mail_shared_access_removed
|
||||
from user.models import User
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.http import HttpRequest
|
||||
@@ -413,9 +415,9 @@ class ShareableObjectMixin(models.Model):
|
||||
)
|
||||
removed_users = self.users.all().exclude(
|
||||
id__in=accessing_users
|
||||
)
|
||||
).values("id")
|
||||
for user in removed_users:
|
||||
user.send_mail_shared_access_removed(self)
|
||||
celery_send_mail_shared_access_removed.delay(self.identifier, user["id"])
|
||||
self.share_with_list(users)
|
||||
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@ from time import sleep
|
||||
from celery import shared_task
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
|
||||
from konova.models import Geometry
|
||||
|
||||
|
||||
@shared_task
|
||||
def celery_update_parcels(geometry_id: str, recheck: bool = True):
|
||||
from konova.models import Geometry
|
||||
try:
|
||||
geom = Geometry.objects.get(id=geometry_id)
|
||||
geom.parcels.clear()
|
||||
@@ -17,3 +17,9 @@ def celery_update_parcels(geometry_id: str, recheck: bool = True):
|
||||
sleep(5)
|
||||
celery_update_parcels(geometry_id, False)
|
||||
|
||||
|
||||
@shared_task
|
||||
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)
|
||||
@@ -49,7 +49,7 @@ class Mailer:
|
||||
auth_password=self.auth_password
|
||||
)
|
||||
|
||||
def send_mail_shared_access_removed(self, obj, user):
|
||||
def send_mail_shared_access_removed(self, obj_identifier, user):
|
||||
""" Send a mail if user has no access to the object anymore
|
||||
|
||||
Args:
|
||||
@@ -60,14 +60,14 @@ class Mailer:
|
||||
"""
|
||||
context = {
|
||||
"user": user,
|
||||
"obj": obj,
|
||||
"obj_identifier": obj_identifier,
|
||||
"EMAIL_REPLY_TO": EMAIL_REPLY_TO,
|
||||
}
|
||||
msg = render_to_string("email/sharing/shared_access_removed.html", context)
|
||||
user_mail_address = [user.email]
|
||||
self.send(
|
||||
user_mail_address,
|
||||
_("{} - Shared access removed").format(obj.identifier),
|
||||
_("{} - Shared access removed").format(obj_identifier),
|
||||
msg
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user