From cae681eae7f2f4b201bf2e4c91f1cfcd54048729 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 2 May 2019 16:36:08 +0200 Subject: [PATCH 1/2] 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 From 90e3e71d3cca31b1c44d7018658144bee4c73b89 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 9 May 2019 13:49:50 +0200 Subject: [PATCH 2/2] fix: user on distant server --- .../migrations/0005_auto_20190502_1432.py | 22 ------------------- djangoldp_notification/models.py | 3 ++- djangoldp_notification/templates/email.html | 2 +- 3 files changed, 3 insertions(+), 24 deletions(-) delete mode 100644 djangoldp_notification/migrations/0005_auto_20190502_1432.py diff --git a/djangoldp_notification/migrations/0005_auto_20190502_1432.py b/djangoldp_notification/migrations/0005_auto_20190502_1432.py deleted file mode 100644 index 0473263..0000000 --- a/djangoldp_notification/migrations/0005_auto_20190502_1432.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- 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 e2da1b2..58a980c 100644 --- a/djangoldp_notification/models.py +++ b/djangoldp_notification/models.py @@ -79,7 +79,8 @@ def send_email_on_notification(sender, instance, **kwargs): 'email.html', { 'on': settings.JABBER_DEFAULT_HOST, - 'instance': instance + 'instance': instance, + 'author': requests.get(instance.author).json()['name'] or 'Unknown user' } ) send_mail( diff --git a/djangoldp_notification/templates/email.html b/djangoldp_notification/templates/email.html index 3f4b363..2907e39 100644 --- a/djangoldp_notification/templates/email.html +++ b/djangoldp_notification/templates/email.html @@ -4,7 +4,7 @@
-

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

+

A new {{ instance.type }} from {{ author }} on {{ on }}

{{ instance.summary }}