From eb7cb88c62feae0b412f4ecc9a5e62c3f7bdc138 Mon Sep 17 00:00:00 2001 From: Sawyer Bergeron Date: Fri, 15 Dec 2017 14:35:40 -0500 Subject: 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 --- src/notifier/dispatchers.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/notifier/dispatchers.py (limited to 'src/notifier/dispatchers.py') 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' -- cgit 1.2.3-korg