From cae681eae7f2f4b201bf2e4c91f1cfcd54048729 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 2 May 2019 16:36:08 +0200 Subject: [PATCH] ui: Add email template & change model for author_user --- .../migrations/0005_auto_20190502_1432.py | 22 +++++++++++++++++ djangoldp_notification/models.py | 24 ++++++++++++++++--- djangoldp_notification/templates/email.html | 20 ++++++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 djangoldp_notification/migrations/0005_auto_20190502_1432.py create mode 100644 djangoldp_notification/templates/email.html diff --git a/djangoldp_notification/migrations/0005_auto_20190502_1432.py b/djangoldp_notification/migrations/0005_auto_20190502_1432.py new file mode 100644 index 0000000..0473263 --- /dev/null +++ b/djangoldp_notification/migrations/0005_auto_20190502_1432.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-05-02 14:32 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('djangoldp_notification', '0004_auto_20190425_1141'), + ] + + operations = [ + migrations.AlterField( + model_name='notification', + name='author_user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/djangoldp_notification/models.py b/djangoldp_notification/models.py index 1f92f14..aa7a8bc 100644 --- a/djangoldp_notification/models.py +++ b/djangoldp_notification/models.py @@ -16,10 +16,12 @@ from djangoldp.fields import LDPUrlField from djangoldp.models import Model from djangoldp.permissions import InboxPermissions +from django.template import loader + class Notification(Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='inbox', on_delete=models.deletion.CASCADE) - author_user = LDPUrlField() + author_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.deletion.CASCADE) object = LDPUrlField() type = models.CharField(max_length=255) summary = models.TextField() @@ -72,5 +74,21 @@ def send_request(target, object_iri): @receiver(post_save, sender=Notification) def send_email_on_notification(sender, instance, **kwargs): - send_mail('Notification on staging.happy-dev.fr', instance.summary, 'from@example.com', [instance.user.email], - fail_silently=False) + if instance.summary and settings.JABBER_DEFAULT_HOST and instance.user.email: + html_message = loader.render_to_string( + 'email.html', + { + 'on': settings.JABBER_DEFAULT_HOST, + 'instance': instance + } + ) + send_mail( + 'Notification on ' + settings.JABBER_DEFAULT_HOST, + instance.summary, + settings.EMAIL_HOST_USER or "noreply@" + settings.JABBER_DEFAULT_HOST, + [instance.user.email], + fail_silently=False, + html_message=html_message + ) + else: + raise Exception('Misconfiguration, missing JABBER_DEFAULT_HOST or incomplete instance') diff --git a/djangoldp_notification/templates/email.html b/djangoldp_notification/templates/email.html new file mode 100644 index 0000000..3f4b363 --- /dev/null +++ b/djangoldp_notification/templates/email.html @@ -0,0 +1,20 @@ + + + + + +
+

A new {{ instance.type }} from {{ instance.author_user.name }} on {{ on }}

+

{{ instance.summary }}

+
+
+

+ -- +
+ Do not reply to this email directly, go to http://{{ on }} instead. +
+ Unsubscribe +

+
+ + \ No newline at end of file