From ca468cb5c13227e88919ee547a5af1a75db02515 Mon Sep 17 00:00:00 2001
From: Calum Mackervoy <c.mackervoy@gmail.com>
Date: Thu, 21 Oct 2021 15:29:14 +0200
Subject: [PATCH] syntax: refactor email notification code

---
 djangoldp_notification/models.py | 39 ++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/djangoldp_notification/models.py b/djangoldp_notification/models.py
index 80ed496..e41508a 100644
--- a/djangoldp_notification/models.py
+++ b/djangoldp_notification/models.py
@@ -224,13 +224,33 @@ def send_request(target, object_iri, instance, created):
         ActivityQueueService.send_activity(target, json)
 
 
+def get_default_email_sender_djangoldp_instance():
+    '''
+    :return: the configured email host if it can find one, or None
+    '''
+    email_from = (getattr(settings, 'DEFAULT_FROM_EMAIL', False) or getattr(settings, 'EMAIL_HOST_USER', False))
+    
+    if not email_from:
+        jabber_host = getattr(settings, 'JABBER_DEFAULT_HOST', False)
+
+        if jabber_host:
+            return "noreply@" + jabber_host
+        return None
+
+    return email_from
+
 @receiver(post_save, sender=Notification)
 def send_email_on_notification(sender, instance, created, **kwargs):
     if created \
             and instance.summary \
-            and getattr(settings,'JABBER_DEFAULT_HOST',False) \
             and instance.user.email \
             and instance.type in ('Message', 'Mention'):
+
+        email_from = get_default_email_sender_djangoldp_instance()
+
+        if email_from is None or not instance.user.settings.receiveMail:
+            return
+
         # get author name, and store in who
         try:
             # local author
@@ -271,15 +291,14 @@ def send_email_on_notification(sender, instance, created, **kwargs):
             }
         )
 
-        if instance.user.settings.receiveMail:
-            send_mail(
-                'Notification sur ' + on,
-                instance.summary,
-                (getattr(settings, 'EMAIL_HOST_USER', False) or "noreply@" + settings.JABBER_DEFAULT_HOST),
-                [instance.user.email],
-                fail_silently=True,
-                html_message=html_message
-            )
+        send_mail(
+            'Notification sur ' + on,
+            instance.summary,
+            email_from,
+            [instance.user.email],
+            fail_silently=True,
+            html_message=html_message
+        )
 
 @receiver(post_save, sender=settings.AUTH_USER_MODEL)
 def create_user_settings(sender, instance, created, **kwargs):
-- 
GitLab