[PATCH 1/1] Send email notification on publication


Amanda Brindle
 

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

Fixes [YOCTO #11208]

Signed-off-by: Amanda Brindle <amanda.r.brindle@...>
---
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

diff --git a/layerindex/views.py b/layerindex/views.py
index bcf6671..35949dd 100644
--- a/layerindex/views.py
+++ b/layerindex/views.py
@@ -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):
diff --git a/templates/layerindex/publishemail.txt b/templates/layerindex/publishemail.txt
new file mode 100644
index 0000000..2500bff
--- /dev/null
+++ b/templates/layerindex/publishemail.txt
@@ -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!
diff --git a/templates/layerindex/publishemailsubject.txt b/templates/layerindex/publishemailsubject.txt
new file mode 100644
index 0000000..a46eaf2
--- /dev/null
+++ b/templates/layerindex/publishemailsubject.txt
@@ -0,0 +1 @@
+{{layer_name }} was published to {{site_name}}
--
2.7.4

Join {yocto@lists.yoctoproject.org to automatically receive all group messages.