aboutsummaryrefslogtreecommitdiffstats
path: root/src/notifier/dispatchers.py
diff options
context:
space:
mode:
authorSawyer Bergeron <sbergeron@iol.unh.edu>2017-12-15 14:35:40 -0500
committerSawyer Bergeron <sbergeron@iol.unh.edu>2018-01-02 22:29:22 +0000
commiteb7cb88c62feae0b412f4ecc9a5e62c3f7bdc138 (patch)
tree18dcaf0f8e2fe6204a506ae51607c46219f4dcb6 /src/notifier/dispatchers.py
parentee1caa30008635717943bfdfecc692cde052a461 (diff)
Implement Notification Framework with Initial Email Support
JIRA: None Notification/notifier objects are now created with title, content, sender, associated resource, and recipient and there is now support for emails at the very least to be sent as notifications. Change-Id: I456cf0e901d9a1e2a1e7d187dcc03d28fca003fb Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
Diffstat (limited to 'src/notifier/dispatchers.py')
-rw-r--r--src/notifier/dispatchers.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/notifier/dispatchers.py b/src/notifier/dispatchers.py
new file mode 100644
index 0000000..64be2a5
--- /dev/null
+++ b/src/notifier/dispatchers.py
@@ -0,0 +1,34 @@
+##############################################################################
+# Copyright (c) 2016 Max Breitenfeldt and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+from django.db.models.signals import pre_save
+from django.dispatch import receiver
+from django.contrib import messages
+from django.core.mail import send_mail
+
+class DispatchHandler():
+
+ @receiver(pre_save, sender='notifier.Notifier')
+ def dispatch(sender, instance, *args, **kwargs):
+ try:
+ msg_type = getattr(DispatchHandler, instance.message_type)
+ msg_type(instance)
+ except AttributeError:
+ instance.msg_sent = 'no dispatcher by given name exists: sending by email'
+ email(instance)
+
+ def email(instance):
+ if instance.msg_sent != 'no dispatcher by given name exists: sending by email':
+ instance.msg_sent = 'by email'
+ send_mail(instance.title,instance.content +
+ '\n\n This message pertains to the following resource: ' +
+ instance.resource.name,instance.sender,[instance.user.email_addr], fail_silently=False)
+
+ def webnotification(instance):
+ instance.msg_sent='by web notification'