Skip to content

Commit cb92192

Browse files
committed
⚡(backend) move email sending to celery
Move send_email and send_invitation_email operations to Celery tasks to prevent API endpoints from blocking while sending emails. Signed-off-by: Johann LORBER <[email protected]>
1 parent 21ee38c commit cb92192

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ and this project adheres to
5252
- ⚡️(frontend) improve tree stability #1207
5353
- ⚡️(frontend) improve accessibility #1232
5454
- 🛂(frontend) block drag n drop when not desktop #1239
55+
- ⚡(backend) move email sending to celery
5556

5657
### Fixed
5758

src/backend/core/api/viewsets.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from core import authentication, choices, enums, models
3939
from core.services.ai_services import AIService
4040
from core.services.collaboration_services import CollaborationService
41-
from core.tasks.mail import send_ask_for_access_mail
41+
from core.tasks.mail import send_ask_for_access_mail, send_invitation_mail
4242
from core.utils import extract_attachments, filter_descendants
4343

4444
from . import permissions, serializers, utils
@@ -1650,10 +1650,11 @@ def perform_create(self, serializer):
16501650
access = serializer.save(document_id=self.kwargs["resource_id"])
16511651

16521652
if access.user:
1653-
access.document.send_invitation_email(
1653+
send_invitation_mail.delay(
1654+
access.document.id,
16541655
access.user.email,
16551656
access.role,
1656-
self.request.user,
1657+
self.request.user.id,
16571658
access.user.language
16581659
or self.request.user.language
16591660
or settings.LANGUAGE_CODE,
@@ -1924,10 +1925,11 @@ def perform_create(self, serializer):
19241925
"""Save invitation to a document then send an email to the invited user."""
19251926
invitation = serializer.save()
19261927

1927-
invitation.document.send_invitation_email(
1928+
send_invitation_mail.delay(
1929+
invitation.document.id,
19281930
invitation.email,
19291931
invitation.role,
1930-
self.request.user,
1932+
self.request.user.id,
19311933
self.request.user.language or settings.LANGUAGE_CODE,
19321934
)
19331935

src/backend/core/tasks/mail.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,16 @@ def send_ask_for_access_mail(ask_for_access_id):
2222
access.user.email,
2323
access.user.language or settings.LANGUAGE_CODE,
2424
)
25+
26+
@app.task
27+
def send_mail(document_id, subject, emails, context=None, language=None):
28+
"""Send email from a document template."""
29+
document = models.Document.objects.get(id=document_id)
30+
document.send_email(subject, emails, context, language)
31+
32+
@app.task
33+
def send_invitation_mail(document_id, email, role, sender_id, language=None):
34+
"""Send invitation email for a document."""
35+
document = models.Document.objects.get(id=document_id)
36+
sender = models.User.objects.get(id=sender_id)
37+
document.send_invitation_email(email, role, sender, language)

0 commit comments

Comments
 (0)