From 61c2a8b62407e793237d4ffc3b882b653635ab43 Mon Sep 17 00:00:00 2001 From: Stein Elgethun <stein.elgethun@usit.uio.no> Date: Fri, 8 Oct 2021 11:55:31 +0200 Subject: [PATCH] Use django-q to create tasks when sending mail Isuse: GREG-66 --- gregui/mailutils.py | 32 +++++++++++++++++++------------- gregui/tests/test_mailutils.py | 7 +++++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/gregui/mailutils.py b/gregui/mailutils.py index 30187aaf..19795179 100644 --- a/gregui/mailutils.py +++ b/gregui/mailutils.py @@ -1,6 +1,6 @@ from django.conf import settings -from django.core.mail import send_mail from django.template.loader import render_to_string +from django_q.tasks import async_task def registration_template(institution, sponsor) -> str: @@ -17,19 +17,25 @@ def confirmation_template(guest) -> str: return render_to_string("sponsor_confirmation.txt", keywords) -def send_registration_mail(mail_to, sponsor) -> int: - return send_mail( - subject="Subject", - message=registration_template(settings.INSTANCE_NAME, sponsor), - from_email=None, - recipient_list=[mail_to], +def send_registration_mail(mail_to, sponsor) -> str: + return async_task( + "django.core.mail.send_mail", + **{ + "subject": "Subject", + "message": registration_template(settings.INSTANCE_NAME, sponsor), + "from_email": None, + "recipient_list": [mail_to], + } ) -def send_confirmation_mail(mail_to, guest) -> int: - return send_mail( - subject="Subject", - message=confirmation_template(guest), - from_email=None, - recipient_list=[mail_to], +def send_confirmation_mail(mail_to, guest) -> str: + return async_task( + "django.core.mail.send_mail", + **{ + "subject": "Subject", + "message": confirmation_template(guest), + "from_email": None, + "recipient_list": [mail_to], + } ) diff --git a/gregui/tests/test_mailutils.py b/gregui/tests/test_mailutils.py index 25391f5d..03f30f3d 100644 --- a/gregui/tests/test_mailutils.py +++ b/gregui/tests/test_mailutils.py @@ -1,4 +1,5 @@ from django.core import mail +from django_q.tasks import result import pytest from gregui import mailutils @@ -33,7 +34,8 @@ Your guest, Foo Bar, has completed their registration, please confirm the guest @pytest.mark.django_db def test_registration_mail(): mail.outbox = [] - assert mailutils.send_registration_mail("test@example.no", "Foo") == 1 + task_id = mailutils.send_registration_mail("test@example.no", "Foo") + assert result(task_id) == 1 assert len(mail.outbox) == 1 assert mail.outbox[0].to == ["test@example.no"] @@ -41,6 +43,7 @@ def test_registration_mail(): @pytest.mark.django_db def test_confirmation_mail(): mail.outbox = [] - assert mailutils.send_confirmation_mail("test@example.no", "Foo") == 1 + task_id = mailutils.send_confirmation_mail("test@example.no", "Foo") + assert result(task_id) == 1 assert len(mail.outbox) == 1 assert mail.outbox[0].to == ["test@example.no"] -- GitLab