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.brin...@intel.com>
---
 layerindex/views.py                          | 34 +++++++++++++++++++++++++++-
 templates/layerindex/publishemail.txt        |  9 ++++++++
 templates/layerindex/publishemailsubject.txt |  1 +
 3 files changed, 43 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..095f428 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,38 @@ 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
+    layeritem = get_object_or_404(LayerItem, name=name)
+    layerbranch = get_object_or_404(LayerBranch, layer=layeritem)
+    layer_url = request.build_absolute_uri(reverse('layer_item', 
args=(layerbranch.branch, layeritem.name)))
+    maintainers = get_list_or_404(LayerMaintainer, layerbranch=layerbranch)
+    from_email = settings.SUBMIT_EMAIL_FROM
+    subjecttext = get_template('layerindex/publishemailsubject.txt')
+    bodytext = get_template('layerindex/publishemail.txt')
+    maintainer_names = [m.name for m in maintainers]
+    # find appropriate help contact
+    for user in User.objects.all():
+        if user.username != 'root' and user.is_active:
+            help_contact = user
+            break
+
+    # create subject from subject template
+    d = Context({
+        'layer_name': layeritem.name,
+        'site_name': request.META['HTTP_HOST'],
+    })
+    subject = subjecttext.render(d).rstrip()
+
+    #create body from body template
+    d = Context({
+        'maintainers': maintainer_names,
+        'layer_name': layeritem.name,
+        'layer_url': layer_url,
+        'help_contact': help_contact,
+    })
+    body = bodytext.render(d)
+
+    tasks.send_email.apply_async((subject, body, from_email, [m.email for m in 
maintainers]))
+
     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..5d703d8
--- /dev/null
+++ b/templates/layerindex/publishemail.txt
@@ -0,0 +1,9 @@
+Hi {{ maintainers|slice:":-1"|join:", "}}{% if maintainers|length > 2 %},{% 
endif %}{% if maintainers|length > 1 %} and {% endif %}{{ maintainers|last }},
+
+You are listed as the {% if maintainers|length > 1 %}maintainers{% else 
%}maintainer{% endif %} for the new layer, {{ layer_name }}. This layer has now 
been published. You can view it at the following URL:
+
+ {{ layer_url }}
+
+If you need to make changes to this layer's entry in the index in the future, 
create an account (using this email address) if you haven't already, and you 
should then be able to click on "Edit layer" on the layer's detail page and 
make the desired changes. If you need any assistance please contact {% if 
help_contact.first_name and help_contact.last_name %}{{ help_contact.first_name 
}} {{ help_contact.last_name}}{% else %}{{ help_contact.username }}{% endif %} 
<{{ help_contact.email }}>.
+
+Thanks!
diff --git a/templates/layerindex/publishemailsubject.txt 
b/templates/layerindex/publishemailsubject.txt
new file mode 100644
index 0000000..1d49ea7
--- /dev/null
+++ b/templates/layerindex/publishemailsubject.txt
@@ -0,0 +1 @@
+{{site_name}}: {{layer_name }} published
-- 
2.7.4

-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to