Skip to contentSkip to conversation

Send email notification on publication

PATCH New Amanda Brindle 1 participant 2 messages Oct 12, 2017

lore
Share & tools
lore
#0 lore raw

cover Send email notification on publication

The following changes since commit ad1aac4ea5d4f2b327f7bd9611aed13f7c31ff7e:

Show note if layer branch hasn't been indexed (2017-10-04 13:49:00 +1300)

are available in the git repository at:

git://git.yoctoproject.org/layerindex-web abrindle/email_notification_publication
http://git.yoctoproject.org/cgit.cgi/layerindex-web/log/?h=abrindle/email_notification_publication

Amanda Brindle (1):
Send email notification on publication

 layerindex/views.py                          | 22 +++++++++++++++++++++-
 templates/layerindex/publishemail.txt        |  7 +++++++
 templates/layerindex/publishemailsubject.txt |  1 +
 3 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100644 templates/layerindex/publishemail.txt
 create mode 100644 templates/layerindex/publishemailsubject.txt
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 Send email notification on publication

When publishing a layer, send an email notification to all of that layer's maintainers.

Fixes [YOCTO #11208]

---
 layerindex/views.py                          | 22 +++++++++++++++++++++-
 templates/layerindex/publishemail.txt        |  7 +++++++
 templates/layerindex/publishemailsubject.txt |  1 +
 3 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100644 templates/layerindex/publishemail.txt
 create mode 100644 templates/layerindex/publishemailsubject.txt
layerindex/views.py +21 -1
index bcf6671..35949dd 100644
@@ -5,7 +5,7 @@
 # Licensed under the MIT license, see COPYING.MIT for details
 
 import sys
-from django.shortcuts import get_object_or_404, render
+from django.shortcuts import get_object_or_404, get_list_or_404, render
 from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404
 from django.core.urlresolvers import reverse, reverse_lazy, resolve
 from django.core.exceptions import PermissionDenied
@@ -261,6 +261,26 @@ def _check_url_branch(kwargs):
 def publish(request, name):
     if not (request.user.is_authenticated() and request.user.has_perm('layerindex.publish_layer')):
         raise PermissionDenied
+    from_email = settings.SUBMIT_EMAIL_FROM
+    plaintext = get_template('layerindex/publishemail.txt')
+    subjecttext = get_template('layerindex/publishemailsubject.txt')
+    e = Context({
+        'layer_name': layeritem.name,
+        'site_name': request.META['HTTP_HOST'],
+    })
+    subject = subjecttext.render(e).rstrip()
+    layeritem = get_object_or_404(LayerItem, name=name)
+    layerbranch = get_object_or_404(LayerBranch, layer=layeritem)
+    maintainers = get_list_or_404(LayerMaintainer, layerbranch=layerbranch)
+    layer_url = request.build_absolute_uri(reverse('layer_item', args=(layerbranch.branch, layeritem.name)))
+    for m in maintainers:
+        d = Context({
+            'maintainer_name': m.name,
+            'layer_name': layeritem.name,
+            'layer_url': layer_url,
+        })
+        text_content = plaintext.render(d)
+        tasks.send_email.apply_async((subject, text_content, from_email, [m.email]))
     return _statuschange(request, name, 'P')
 
 def _statuschange(request, name, newstatus):
templates/layerindex/publishemail.txt new file +7 -0
new file mode 100644
index 0000000..2500bff
@@ -0,0 +1,7 @@
+Hi {{ maintainer_name }},
+
+You are listed as a maintainer for the new layer, {{ layer_name }}. This layer has been published. You can view it at the following URL:
+
+ {{ layer_url }}
+
+Thanks!
templates/layerindex/publishemailsubject.txt new file +1 -0
new file mode 100644
index 0000000..a46eaf2
@@ -0,0 +1 @@
+{{layer_name }} was published to {{site_name}}
Signature · 1 line
2.7.4