Send email notification on publication

When publishing a layer, send an email notification to all of that
layer's maintainers. Include information on how to edit the layer, plus
contact details for the first active staff user if there are any
problems (we could make this configurable in future, but for now this is
sufficient).

Fixes [YOCTO #11208]

Signed-off-by: Amanda Brindle <amanda.r.brindle@intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Amanda Brindle 2017-09-21 13:51:05 -07:00 committed by Paul Eggleton
parent ad1aac4ea5
commit be95164aa7
3 changed files with 43 additions and 1 deletions

View File

@ -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_staff or user.is_superuser) 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):

View File

@ -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!

View File

@ -0,0 +1 @@
{{site_name}}: {{layer_name }} published