From 997c1186ecac858dace5ca5af89d814f87d659c5 Mon Sep 17 00:00:00 2001 From: Kennedy Kori Date: Mon, 18 Oct 2021 10:44:56 +0300 Subject: [PATCH] fix: admins not receiving new user notification emails --- .../mjml/account_pending_approval_admin.mjml | 2 +- fahari/users/signals.py | 15 +++++++++++---- fahari/users/tests/test_signals.py | 12 +++++++----- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/fahari/templates/emails/mjml/account_pending_approval_admin.mjml b/fahari/templates/emails/mjml/account_pending_approval_admin.mjml index a2cdcbe3..7ff05470 100644 --- a/fahari/templates/emails/mjml/account_pending_approval_admin.mjml +++ b/fahari/templates/emails/mjml/account_pending_approval_admin.mjml @@ -24,7 +24,7 @@ It's currently awaiting review and approval. - Please log in to the administration site and review the request. + Please log in to the administration site and review the request or alternatively use the following link: {{user_approval_url}}. With kind regards, diff --git a/fahari/users/signals.py b/fahari/users/signals.py index 616c0e2f..62b8371f 100644 --- a/fahari/users/signals.py +++ b/fahari/users/signals.py @@ -8,6 +8,7 @@ from django.db import transaction from django.db.models.signals import post_save from django.dispatch import receiver +from django.http import HttpRequest from django.template.loader import get_template LOGGER = logging.getLogger(__name__) @@ -45,7 +46,7 @@ def email_confirmed_hander(request, email_address, **kwargs): if user.is_approved or user.approval_notified: return False # do nothing - send_admin_awaiting_approval_email(user) + send_admin_awaiting_approval_email(user, request) send_user_awaiting_approval_email(user) return True except User.DoesNotExist as e: @@ -105,14 +106,20 @@ def account_confirmed_handler(sender, instance, created, **kwargs): return True -def send_admin_awaiting_approval_email(user): - context = {"user": user, "support_email": settings.SERVER_EMAIL} +def send_admin_awaiting_approval_email(user, request: HttpRequest) -> None: + context = { + "user": user, + "support_email": settings.SERVER_EMAIL, + "user_approval_url": request.build_absolute_uri( + "/admin/users/user/%s/change/" % str(user.pk) + ), + } message = get_template("emails/account_pending_approval_admin.html").render(context) mail = EmailMessage( subject="New Fahari System Account Pending Approval", body=message, from_email=settings.SERVER_EMAIL, - to=[user.email], + to=[admin.email for admin in User.objects.filter(is_staff=True)], reply_to=[settings.SERVER_EMAIL], ) mail.content_subtype = "html" diff --git a/fahari/users/tests/test_signals.py b/fahari/users/tests/test_signals.py index 22d53786..501a3a21 100644 --- a/fahari/users/tests/test_signals.py +++ b/fahari/users/tests/test_signals.py @@ -56,16 +56,18 @@ def test_send_user_awaiting_approval_email(mailoutbox): ] -def test_send_admin_awaiting_approval_email(mailoutbox): +def test_send_admin_awaiting_approval_email(mailoutbox, rf): + admins = baker.make( + User, 3, approval_notified=True, email=fake.email(), is_approved=True, is_staff=True + ) user = baker.make(User, email=fake.email(), is_approved=True, approval_notified=False) - send_admin_awaiting_approval_email(user) # no error + request = rf.get("/") + send_admin_awaiting_approval_email(user, request) # no error assert len(mailoutbox) >= 1 m = mailoutbox[len(mailoutbox) - 1] assert m.subject == "New Fahari System Account Pending Approval" assert m.from_email == settings.SERVER_EMAIL - assert list(m.to) == [ - user.email, - ] + assert set(m.to) == set(admin.email for admin in admins) def test_account_confirmed_handler_newly_created():