From 916865ab956731c59cb177d4a27e0666bfec3738 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 19 Mar 2020 16:13:03 +0100 Subject: [PATCH] modify_mailtemplate permission implemented --- smash/web/templates/sidebar.html | 15 +++++++++------ smash/web/tests/view/test_mail.py | 11 ++++++++++- smash/web/views/mails.py | 10 +++++++++- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/smash/web/templates/sidebar.html b/smash/web/templates/sidebar.html index 00aa8ca8..5aceea8b 100644 --- a/smash/web/templates/sidebar.html +++ b/smash/web/templates/sidebar.html @@ -73,12 +73,15 @@ </li> {% endif %} - <li data-desc="mail_templates"> - <a href="{% url 'web.views.mail_templates' %}"> - <i class="fa fa-envelope-o"></i> - <span>Mail templates</span> - </a> - </li> + + {% if "change_mailtemplate" in permissions %} + <li data-desc="mail_templates"> + <a href="{% url 'web.views.mail_templates' %}"> + <i class="fa fa-envelope-o"></i> + <span>Mail templates</span> + </a> + </li> + {% endif %} <li data-desc="export"> <a href="{% url 'web.views.export' %}"> diff --git a/smash/web/tests/view/test_mail.py b/smash/web/tests/view/test_mail.py index 900c84a7..1f11340a 100644 --- a/smash/web/tests/view/test_mail.py +++ b/smash/web/tests/view/test_mail.py @@ -4,8 +4,8 @@ from django.urls import reverse from web.models import MailTemplate from web.models.constants import MAIL_TEMPLATE_CONTEXT_VOUCHER -from web.tests.functions import create_voucher, get_resource_path from web.tests import LoggedInTestCase +from web.tests.functions import create_voucher, get_resource_path logger = logging.getLogger(__name__) @@ -20,3 +20,12 @@ class MailTests(LoggedInTestCase): page = reverse('web.views.mail_template_generate_for_vouchers') + "?voucher_id=" + str(voucher.id) response = self.client.get(page) self.assertEqual(response.status_code, 200) + + def test_list_mail_templates(self): + self.login_as_admin() + response = self.client.get(reverse("web.views.mail_templates")) + self.assertEqual(response.status_code, 200) + + def test_list_mail_templates_without_permission(self): + response = self.client.get(reverse("web.views.mail_templates")) + self.assertEqual(response.status_code, 302) diff --git a/smash/web/views/mails.py b/smash/web/views/mails.py index ef4cf0b3..7b49409c 100644 --- a/smash/web/views/mails.py +++ b/smash/web/views/mails.py @@ -9,6 +9,7 @@ from django.urls import reverse_lazy from django.views.generic import DeleteView from django.views.generic import ListView +from web.decorators import PermissionDecorator from web.docx_helper import merge_files from . import WrappedView from . import wrap_response @@ -32,7 +33,11 @@ class MailTemplatesListView(ListView, WrappedView): context_object_name = "mail_templates" template_name = 'mail_templates/list.html' - def get_context_data(self, **kwargs): + @PermissionDecorator('change_mailtemplate', 'mailtemplate') + def dispatch(self, *args, **kwargs): + return super(MailTemplatesListView, self).dispatch(*args, **kwargs) + + def get_context_data(self, *args, **kwargs): context = super(MailTemplatesListView, self).get_context_data() context['explanations'] = {"generic": MailTemplate.MAILS_TEMPLATE_GENERIC_TAGS, "subject": MailTemplate.MAILS_TEMPLATE_SUBJECT_TAGS, @@ -43,6 +48,7 @@ class MailTemplatesListView(ListView, WrappedView): return context +@PermissionDecorator('change_mailtemplate', 'mailtemplate') def mail_template_add(request): if request.method == 'POST': form = MailTemplateForm(request.POST, request.FILES) @@ -59,6 +65,7 @@ def mail_template_add(request): return wrap_response(request, 'mail_templates/add.html', {'form': form}) +@PermissionDecorator('change_mailtemplate', 'mailtemplate') def mail_template_edit(request, pk): template = get_object_or_404(MailTemplate, pk=pk) if request.method == 'POST': @@ -82,6 +89,7 @@ class MailTemplatesDeleteView(DeleteView, WrappedView): success_url = reverse_lazy('web.views.mail_templates') template_name = 'mail_templates/confirm_delete.html' + @PermissionDecorator('change_mailtemplate', 'mailtemplate') def delete(self, request, *args, **kwargs): messages.success(request, "Template deleted") try: -- GitLab