mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
Add an email test function
When you make changes to the infrastructure it can be useful to test that email sending is working, since for that to work that involves the code, Celery, RabbitMQ and SMTP being functional. However, up until now to run a test you needed to submit a fake layer which is a bit annoying. Add an explicit "Test email" option to the Tools drop-down for staff users to allow them to send an email to themselves. Note: the page will come back when the Celery job has been created, it does not check and report on the job status - you need to look on the server side to see that. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
parent
3cc90cde35
commit
d3bd81dc3b
|
@ -8,7 +8,7 @@ from django.conf.urls import *
|
||||||
from django.views.generic import TemplateView, DetailView, ListView, RedirectView
|
from django.views.generic import TemplateView, DetailView, ListView, RedirectView
|
||||||
from django.views.defaults import page_not_found
|
from django.views.defaults import page_not_found
|
||||||
from django.core.urlresolvers import reverse_lazy
|
from django.core.urlresolvers import reverse_lazy
|
||||||
from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, HistoryListView, EditProfileFormView, AdvancedRecipeSearchView, BulkChangeView, BulkChangeSearchView, bulk_change_edit_view, bulk_change_patch_view, BulkChangeDeleteView, RecipeDetailView, RedirectParamsView, ClassicRecipeSearchView, ClassicRecipeDetailView, ClassicRecipeStatsView, LayerUpdateDetailView, UpdateListView, UpdateDetailView, StatsView, publish_view, LayerCheckListView, BBClassCheckListView, TaskStatusView, ComparisonRecipeSelectView, ComparisonRecipeSelectDetailView, task_log_view, task_stop_view
|
from layerindex.views import LayerListView, LayerReviewListView, LayerReviewDetailView, RecipeSearchView, MachineSearchView, LayerDetailView, edit_layer_view, delete_layer_view, edit_layernote_view, delete_layernote_view, HistoryListView, EditProfileFormView, AdvancedRecipeSearchView, BulkChangeView, BulkChangeSearchView, bulk_change_edit_view, bulk_change_patch_view, BulkChangeDeleteView, RecipeDetailView, RedirectParamsView, ClassicRecipeSearchView, ClassicRecipeDetailView, ClassicRecipeStatsView, LayerUpdateDetailView, UpdateListView, UpdateDetailView, StatsView, publish_view, LayerCheckListView, BBClassCheckListView, TaskStatusView, ComparisonRecipeSelectView, ComparisonRecipeSelectDetailView, task_log_view, task_stop_view, email_test_view
|
||||||
from layerindex.models import LayerItem, Recipe, RecipeChangeset
|
from layerindex.models import LayerItem, Recipe, RecipeChangeset
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
from . import restviews
|
from . import restviews
|
||||||
|
@ -164,6 +164,9 @@ urlpatterns = [
|
||||||
ComparisonRecipeSelectDetailView.as_view(
|
ComparisonRecipeSelectDetailView.as_view(
|
||||||
template_name='layerindex/comparisonrecipeselectdetail.html'),
|
template_name='layerindex/comparisonrecipeselectdetail.html'),
|
||||||
name='comparison_select_detail'),
|
name='comparison_select_detail'),
|
||||||
|
url(r'^email_test/$',
|
||||||
|
email_test_view,
|
||||||
|
name='email_test'),
|
||||||
url(r'^task/(?P<task_id>[-\w]+)/$',
|
url(r'^task/(?P<task_id>[-\w]+)/$',
|
||||||
TaskStatusView.as_view(
|
TaskStatusView.as_view(
|
||||||
template_name='layerindex/task.html'),
|
template_name='layerindex/task.html'),
|
||||||
|
|
|
@ -31,6 +31,7 @@ from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
|
from django.contrib.sites.models import Site
|
||||||
|
|
||||||
from reversion.models import Revision
|
from reversion.models import Revision
|
||||||
from . import utils
|
from . import utils
|
||||||
|
@ -266,6 +267,15 @@ def _check_url_branch(kwargs):
|
||||||
raise Http404
|
raise Http404
|
||||||
branch = get_object_or_404(Branch, name=branchname)
|
branch = get_object_or_404(Branch, name=branchname)
|
||||||
|
|
||||||
|
def _get_help_contact():
|
||||||
|
# find appropriate help contact
|
||||||
|
help_contact = None
|
||||||
|
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
|
||||||
|
return help_contact
|
||||||
|
|
||||||
def publish_view(request, name):
|
def publish_view(request, name):
|
||||||
if not (request.user.is_authenticated() and request.user.has_perm('layerindex.publish_layer')):
|
if not (request.user.is_authenticated() and request.user.has_perm('layerindex.publish_layer')):
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
|
@ -279,12 +289,6 @@ def publish_view(request, name):
|
||||||
subjecttext = get_template('layerindex/publishemailsubject.txt')
|
subjecttext = get_template('layerindex/publishemailsubject.txt')
|
||||||
bodytext = get_template('layerindex/publishemail.txt')
|
bodytext = get_template('layerindex/publishemail.txt')
|
||||||
maintainer_names = [m.name for m in maintainers]
|
maintainer_names = [m.name for m in maintainers]
|
||||||
# find appropriate help contact
|
|
||||||
help_contact = None
|
|
||||||
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
|
# create subject from subject template
|
||||||
d = {
|
d = {
|
||||||
|
@ -298,7 +302,7 @@ def publish_view(request, name):
|
||||||
'maintainers': maintainer_names,
|
'maintainers': maintainer_names,
|
||||||
'layer_name': layeritem.name,
|
'layer_name': layeritem.name,
|
||||||
'layer_url': layer_url,
|
'layer_url': layer_url,
|
||||||
'help_contact': help_contact,
|
'help_contact': _get_help_contact(),
|
||||||
}
|
}
|
||||||
body = bodytext.render(d)
|
body = bodytext.render(d)
|
||||||
|
|
||||||
|
@ -1423,6 +1427,34 @@ def task_stop_view(request, task_id):
|
||||||
return HttpResponse('terminated')
|
return HttpResponse('terminated')
|
||||||
|
|
||||||
|
|
||||||
|
def email_test_view(request):
|
||||||
|
if not request.user.is_authenticated() and request.user.is_staff():
|
||||||
|
raise PermissionDenied
|
||||||
|
|
||||||
|
plaintext = get_template('layerindex/testemail.txt')
|
||||||
|
if request.user.first_name:
|
||||||
|
user_name = request.user.first_name
|
||||||
|
else:
|
||||||
|
user_name = request.user.username
|
||||||
|
site = Site.objects.get_current()
|
||||||
|
if site:
|
||||||
|
site_name = site.name
|
||||||
|
else:
|
||||||
|
site_name = 'OE Layer Index'
|
||||||
|
d = {
|
||||||
|
'user_name': user_name,
|
||||||
|
'site_name': site_name,
|
||||||
|
'site_host': request.META['HTTP_HOST'],
|
||||||
|
'help_contact': _get_help_contact(),
|
||||||
|
}
|
||||||
|
subject = '%s: test email' % site_name
|
||||||
|
from_email = settings.SUBMIT_EMAIL_FROM
|
||||||
|
to_email = request.user.email
|
||||||
|
text_content = plaintext.render(d)
|
||||||
|
tasks.send_email.apply_async((subject, text_content, from_email, [to_email]))
|
||||||
|
return HttpResponse('Test email sent to %s' % to_email)
|
||||||
|
|
||||||
|
|
||||||
class ComparisonRecipeSelectView(ClassicRecipeSearchView):
|
class ComparisonRecipeSelectView(ClassicRecipeSearchView):
|
||||||
def _can_edit(self):
|
def _can_edit(self):
|
||||||
if self.request.user.is_authenticated():
|
if self.request.user.is_authenticated():
|
||||||
|
|
|
@ -85,7 +85,9 @@
|
||||||
<li><a href="{% url 'rrs_frontpage' %}">Recipe Maintenance</a></li>
|
<li><a href="{% url 'rrs_frontpage' %}">Recipe Maintenance</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if user.is_staff %}
|
{% if user.is_staff %}
|
||||||
|
<li class="divider"></li>
|
||||||
<li><a href="{% url 'admin:index' %}">Admin</a></li>
|
<li><a href="{% url 'admin:index' %}">Admin</a></li>
|
||||||
|
<li><a href="{% url 'email_test' %}">Test email</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
7
templates/layerindex/testemail.txt
Normal file
7
templates/layerindex/testemail.txt
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
Hi {{ user_name }},
|
||||||
|
|
||||||
|
This is a test email from {{ site_name }} at {{ site_host }} to ensure that the email setup is working.
|
||||||
|
|
||||||
|
The help contact for this site is {% 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 }}> (usually defined as the first active staff user who isn't "root").
|
||||||
|
|
||||||
|
Have a nice day!
|
Loading…
Reference in New Issue
Block a user