diff --git a/mayan/apps/mailer/apps.py b/mayan/apps/mailer/apps.py index f3c696eb68..836bae07fd 100644 --- a/mayan/apps/mailer/apps.py +++ b/mayan/apps/mailer/apps.py @@ -20,8 +20,8 @@ from mayan.celery import app from .classes import MailerBackend from .links import ( - link_document_send, link_document_send_link, link_document_multiple_send, - link_document_multiple_send_link, link_system_mailer_error_log, + link_document_multiple_send, link_document_multiple_send_link, + link_document_send, link_document_send_link, link_system_mailer_error_log, link_user_mailer_create, link_user_mailer_delete, link_user_mailer_edit, link_user_mailer_list, link_user_mailer_log_list, link_user_mailer_setup, link_user_mailer_test @@ -48,8 +48,8 @@ class MailerApp(MayanAppConfig): app_label='documents', model_name='Document' ) - LogEntry = self.get_model('LogEntry') - UserMailer = self.get_model('UserMailer') + LogEntry = self.get_model(model_name='LogEntry') + UserMailer = self.get_model(model_name='UserMailer') MailerBackend.initialize() diff --git a/mayan/apps/mailer/classes.py b/mayan/apps/mailer/classes.py index df6b20ddc2..00cf039e51 100644 --- a/mayan/apps/mailer/classes.py +++ b/mayan/apps/mailer/classes.py @@ -67,7 +67,7 @@ class MailerBackend(six.with_metaclass(MailerBackendMetaclass, MailerBackendBase def initialize(): for app in apps.get_app_configs(): try: - import_module('{}.mailers'.format(app.name)) + import_module(name='{}.mailers'.format(app.name)) except ImportError as exception: if force_text(exception) not in ('No module named mailers', 'No module named \'{}.mailers\''.format(app.name)): logger.error( diff --git a/mayan/apps/mailer/forms.py b/mayan/apps/mailer/forms.py index db7b420996..6c99ceeb5f 100644 --- a/mayan/apps/mailer/forms.py +++ b/mayan/apps/mailer/forms.py @@ -47,8 +47,8 @@ class DocumentMailForm(forms.Form): } queryset = AccessControlList.objects.filter_by_access( - permission=permission_user_mailer_use, user=user, - queryset=UserMailer.objects.filter(enabled=True) + permission=permission_user_mailer_use, + queryset=UserMailer.objects.filter(enabled=True), user=user ) self.fields['user_mailer'].queryset = queryset @@ -96,8 +96,10 @@ class UserMailerDynamicForm(DynamicModelForm): def __init__(self, *args, **kwargs): result = super(UserMailerDynamicForm, self).__init__(*args, **kwargs) if self.instance.backend_data: - for key, value in json.loads(self.instance.backend_data).items(): - self.fields[key].initial = value + for key, value in json.loads(s=self.instance.backend_data).items(): + field = self.fields.get(key) + if field: + field.initial = value return result diff --git a/mayan/apps/mailer/links.py b/mayan/apps/mailer/links.py index e700537f6f..aa25965cfc 100644 --- a/mayan/apps/mailer/links.py +++ b/mayan/apps/mailer/links.py @@ -5,16 +5,10 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.navigation import Link from .icons import ( - icon_document_send, - icon_document_send_link, - icon_document_multiple_send, - icon_document_multiple_send_link, - - icon_system_mailer_error_log, icon_user_mailer_create, - icon_user_mailer_delete,icon_user_mailer_edit, - - icon_user_mailer_list, icon_user_mailer_setup, - icon_user_mailer_test + icon_document_multiple_send, icon_document_multiple_send_link, + icon_document_send, icon_document_send_link, icon_system_mailer_error_log, + icon_user_mailer_create, icon_user_mailer_delete, icon_user_mailer_edit, + icon_user_mailer_list, icon_user_mailer_setup, icon_user_mailer_test ) from .permissions import ( permission_mailing_link, permission_mailing_send_document, diff --git a/mayan/apps/mailer/literals.py b/mayan/apps/mailer/literals.py index 182216d7cc..60a6238073 100644 --- a/mayan/apps/mailer/literals.py +++ b/mayan/apps/mailer/literals.py @@ -7,11 +7,11 @@ DEFAULT_DOCUMENT_BODY_TEMPLATE = _( '--------\n ' 'This email has been sent from %(project_title)s (%(project_website)s)' ) - +DEFAULT_DOCUMENT_SUBJECT_TEMPLATE = _('Document: {{ document }}') DEFAULT_LINK_BODY_TEMPLATE = _( 'To access this document click on the following link: ' '{{ link }}\n\n--------\n ' 'This email has been sent from %(project_title)s (%(project_website)s)' ) - +DEFAULT_LINK_SUBJECT_TEMPLATE = _('Link for document: {{ document }}') EMAIL_SEPARATORS = (',', ';') diff --git a/mayan/apps/mailer/models.py b/mayan/apps/mailer/models.py index f4fd5449a4..5a428fc917 100644 --- a/mayan/apps/mailer/models.py +++ b/mayan/apps/mailer/models.py @@ -114,7 +114,7 @@ class UserMailer(models.Model): """ Deserialize the stored backend data. """ - return json.loads(self.backend_data) + return json.loads(s=self.backend_data) def natural_key(self): return (self.label,) @@ -150,7 +150,9 @@ class UserMailer(models.Model): mimetype=attachment['mimetype'] ) - email_message.attach_alternative(body, 'text/html') + email_message.attach_alternative( + content=body, mimetype='text/html' + ) try: email_message.send() diff --git a/mayan/apps/mailer/settings.py b/mayan/apps/mailer/settings.py index ce714d39ec..55f042860f 100644 --- a/mayan/apps/mailer/settings.py +++ b/mayan/apps/mailer/settings.py @@ -5,13 +5,14 @@ from django.utils.translation import ugettext_lazy as _ from mayan.apps.smart_settings import Namespace from .literals import ( - DEFAULT_DOCUMENT_BODY_TEMPLATE, DEFAULT_LINK_BODY_TEMPLATE + DEFAULT_DOCUMENT_BODY_TEMPLATE, DEFAULT_DOCUMENT_SUBJECT_TEMPLATE, + DEFAULT_LINK_BODY_TEMPLATE, DEFAULT_LINK_SUBJECT_TEMPLATE ) namespace = Namespace(name='mailer', label=_('Mailing')) setting_link_subject_template = namespace.add_setting( - default=_('Link for document: {{ document }}'), + default=DEFAULT_LINK_SUBJECT_TEMPLATE, help_text=_('Template for the document link email form subject line.'), global_name='MAILER_LINK_SUBJECT_TEMPLATE' ) @@ -24,7 +25,7 @@ setting_link_body_template = namespace.add_setting( global_name='MAILER_LINK_BODY_TEMPLATE' ) setting_document_subject_template = namespace.add_setting( - default=_('Document: {{ document }}'), + default=DEFAULT_DOCUMENT_SUBJECT_TEMPLATE, help_text=_('Template for the document email form subject line.'), global_name='MAILER_DOCUMENT_SUBJECT_TEMPLATE' ) diff --git a/mayan/apps/mailer/tests/literals.py b/mayan/apps/mailer/tests/literals.py index ae3b603355..0ab35d3b78 100644 --- a/mayan/apps/mailer/tests/literals.py +++ b/mayan/apps/mailer/tests/literals.py @@ -17,3 +17,4 @@ TEST_RECIPIENTS_MULTIPLE_MIXED_RESULT = [ ] TEST_USER_MAILER_BACKEND_PATH = 'mayan.apps.mailer.tests.mailers.TestBackend' TEST_USER_MAILER_LABEL = 'test user mailer label' +TEST_USER_MAILER_LABEL_EDITED = 'test user mailer label edited' diff --git a/mayan/apps/mailer/tests/mixins.py b/mayan/apps/mailer/tests/mixins.py index 3cee7df777..dfa50ead6f 100644 --- a/mayan/apps/mailer/tests/mixins.py +++ b/mayan/apps/mailer/tests/mixins.py @@ -5,8 +5,8 @@ import json from ..models import UserMailer from .literals import ( - TEST_EMAIL_FROM_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, - TEST_USER_MAILER_LABEL + TEST_EMAIL_ADDRESS, TEST_EMAIL_FROM_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, + TEST_USER_MAILER_LABEL, TEST_USER_MAILER_LABEL_EDITED ) @@ -23,3 +23,42 @@ class MailerTestMixin(object): } ) ) + + def _request_user_mailer_create(self): + return self.post( + viewname='mailer:user_mailer_create', kwargs={ + 'class_path': TEST_USER_MAILER_BACKEND_PATH + }, data={ + 'default': True, 'enabled': True, + 'label': TEST_USER_MAILER_LABEL, + } + ) + + def _request_user_mailer_delete(self): + return self.post( + viewname='mailer:user_mailer_delete', + kwargs={'mailer_pk': self.user_mailer.pk} + ) + + def _request_user_mailer_edit(self): + return self.post( + viewname='mailer:user_mailer_edit', + kwargs={'mailer_pk': self.user_mailer.pk}, + data={ + 'label': TEST_USER_MAILER_LABEL_EDITED + } + ) + + def _request_user_mailer_list_view(self): + return self.get(viewname='mailer:user_mailer_list') + + def _request_user_mailer_test(self): + return self.post( + viewname='mailer:user_mailer_test', + kwargs={'mailer_pk': self.user_mailer.pk}, + data={ + 'email': getattr( + self, 'test_email_address', TEST_EMAIL_ADDRESS + ) + } + ) diff --git a/mayan/apps/mailer/tests/test_views.py b/mayan/apps/mailer/tests/test_views.py index 64b2153bdd..01ad745069 100644 --- a/mayan/apps/mailer/tests/test_views.py +++ b/mayan/apps/mailer/tests/test_views.py @@ -9,7 +9,8 @@ from ..models import UserMailer from ..permissions import ( permission_mailing_link, permission_mailing_send_document, permission_user_mailer_create, permission_user_mailer_delete, - permission_user_mailer_use, permission_user_mailer_view + permission_user_mailer_edit, permission_user_mailer_use, + permission_user_mailer_view ) from .literals import ( @@ -17,8 +18,8 @@ from .literals import ( TEST_RECIPIENTS_MULTIPLE_COMMA, TEST_RECIPIENTS_MULTIPLE_COMMA_RESULT, TEST_RECIPIENTS_MULTIPLE_MIXED, TEST_RECIPIENTS_MULTIPLE_MIXED_RESULT, TEST_RECIPIENTS_MULTIPLE_SEMICOLON, - TEST_RECIPIENTS_MULTIPLE_SEMICOLON_RESULT, TEST_USER_MAILER_BACKEND_PATH, - TEST_USER_MAILER_LABEL + TEST_RECIPIENTS_MULTIPLE_SEMICOLON_RESULT, TEST_USER_MAILER_LABEL, + TEST_USER_MAILER_LABEL_EDITED ) from .mailers import TestBackend from .mixins import MailerTestMixin @@ -29,31 +30,6 @@ class MailerViewsTestCase(MailerTestMixin, GenericViewTestCase): super(MailerViewsTestCase, self).setUp() self.login_user() - def _request_user_mailer_create(self): - return self.post( - viewname='mailer:user_mailer_create', args=( - TEST_USER_MAILER_BACKEND_PATH, - ), data={ - 'default': True, 'enabled': True, - 'label': TEST_USER_MAILER_LABEL, - } - ) - - def _request_user_mailer_delete(self): - return self.post( - viewname='mailer:user_mailer_delete', args=(self.user_mailer.pk,) - ) - - def _request_user_mailer_test(self): - return self.post( - viewname='mailer:user_mailer_test', args=(self.user_mailer.pk,), - data={ - 'email': getattr( - self, 'test_email_address', TEST_EMAIL_ADDRESS - ) - } - ) - def test_user_mailer_create_view_no_permissions(self): response = self._request_user_mailer_create() @@ -62,7 +38,7 @@ class MailerViewsTestCase(MailerTestMixin, GenericViewTestCase): ) self.assertEqual(UserMailer.objects.count(), 0) - def test_user_mailer_create_view_with_permissions(self): + def test_user_mailer_create_view_with_permission(self): self.grant_permission(permission=permission_user_mailer_create) response = self._request_user_mailer_create() @@ -73,7 +49,8 @@ class MailerViewsTestCase(MailerTestMixin, GenericViewTestCase): def test_user_mailer_delete_view_no_permissions(self): self._create_user_mailer() - self._request_user_mailer_delete() + response = self._request_user_mailer_delete() + self.assertEqual(response.status_code, 404) self.assertQuerysetEqual( UserMailer.objects.all(), (repr(self.user_mailer),) @@ -86,12 +63,32 @@ class MailerViewsTestCase(MailerTestMixin, GenericViewTestCase): obj=self.user_mailer, permission=permission_user_mailer_delete ) - self._request_user_mailer_delete() + response = self._request_user_mailer_delete() + self.assertEqual(response.status_code, 302) self.assertEqual(UserMailer.objects.count(), 0) - def _request_user_mailer_list_view(self): - return self.get(viewname='mailer:user_mailer_list') + def test_user_mailer_edit_view_no_permission(self): + self._create_user_mailer() + + response = self._request_user_mailer_edit() + self.assertEqual(response.status_code, 404) + + self.user_mailer.refresh_from_db() + self.assertEqual(self.user_mailer.label, TEST_USER_MAILER_LABEL) + + def test_user_mailer_edit_view_with_access(self): + self._create_user_mailer() + + self.grant_access( + obj=self.user_mailer, permission=permission_user_mailer_edit + ) + + response = self._request_user_mailer_edit() + self.assertEqual(response.status_code, 302) + + self.user_mailer.refresh_from_db() + self.assertEqual(self.user_mailer.label, TEST_USER_MAILER_LABEL_EDITED) def test_user_mailer_list_view_no_permissions(self): self._create_user_mailer() @@ -118,7 +115,7 @@ class MailerViewsTestCase(MailerTestMixin, GenericViewTestCase): response = self._request_user_mailer_test() - self.assertEqual(response.status_code, 403) + self.assertEqual(response.status_code, 404) self.assertEqual(len(mail.outbox), 0) @@ -192,7 +189,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): def _request_document_link_send(self): return self.post( - viewname='mailer:document_send_link', args=(self.document.pk,), + viewname='mailer:document_send_link', + kwargs={'document_pk': self.document.pk}, data={ 'email': getattr( self, 'test_email_address', TEST_EMAIL_ADDRESS @@ -203,7 +201,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): def _request_document_send(self): return self.post( - viewname='mailer:document_send', args=(self.document.pk,), + viewname='mailer:document_send', + kwargs={'document_pk': self.document.pk}, data={ 'email': getattr( self, 'test_email_address', TEST_EMAIL_ADDRESS @@ -267,7 +266,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): permission=permission_user_mailer_use, obj=self.user_mailer ) - self._request_document_link_send() + response = self._request_document_link_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -285,7 +285,6 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) self.assertEqual(len(mail.outbox), 0) - def test_mail_document_view_with_document_access(self): self._create_user_mailer() @@ -328,12 +327,12 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) response = self._request_document_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) self.assertEqual(mail.outbox[0].to, [TEST_EMAIL_ADDRESS]) - def test_mail_link_view_recipients_comma(self): self._create_user_mailer() @@ -341,7 +340,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.grant_permission(permission=permission_user_mailer_use) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_COMMA - self._request_document_link_send() + response = self._request_document_link_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -356,7 +356,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.grant_permission(permission=permission_user_mailer_use) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_MIXED - self._request_document_link_send() + response = self._request_document_link_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -371,7 +372,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.grant_permission(permission=permission_user_mailer_use) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_SEMICOLON - self._request_document_link_send() + response = self._request_document_link_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -386,7 +388,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.grant_permission(permission=permission_user_mailer_use) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_COMMA - self._request_document_send() + response = self._request_document_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -401,7 +404,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.grant_permission(permission=permission_user_mailer_use) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_MIXED - self._request_document_send() + response = self._request_document_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -416,7 +420,8 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): self.grant_permission(permission=permission_user_mailer_use) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_SEMICOLON - self._request_document_send() + response = self._request_document_send() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) diff --git a/mayan/apps/mailer/urls.py b/mayan/apps/mailer/urls.py index 31b8f81e1b..490d88d573 100644 --- a/mayan/apps/mailer/urls.py +++ b/mayan/apps/mailer/urls.py @@ -11,52 +11,53 @@ from .views import ( urlpatterns = [ url( - r'^documents/(?P\d+)/send/link/$', MailDocumentLinkView.as_view(), - name='document_send_link' + regex=r'^documents/(?P\d+)/send/link/$', + name='document_send_link', view=MailDocumentLinkView.as_view() ), url( - r'^documents/multiple/send/link/$', MailDocumentLinkView.as_view(), - name='document_multiple_send_link' + regex=r'^documents/multiple/send/link/$', + name='document_multiple_send_link', + view=MailDocumentLinkView.as_view() ), url( - r'^documents/(?P\d+)/send/$', MailDocumentView.as_view(), - name='document_send' + regex=r'^documents/(?P\d+)/send/$', name='document_send', + view=MailDocumentView.as_view() ), url( - r'^documents/multiple/send/document/$', MailDocumentView.as_view(), - name='document_multiple_send' + regex=r'^documents/multiple/send/document/$', + name='document_multiple_send', view=MailDocumentView.as_view() ), url( - r'^system_mailer/log/$', SystemMailerLogEntryListView.as_view(), - name='system_mailer_error_log' + regex=r'^system_mailer/log/$', name='system_mailer_error_log', + view=SystemMailerLogEntryListView.as_view() ), url( - r'^user_mailers/backend/selection/$', - UserMailerBackendSelectionView.as_view(), - name='user_mailer_backend_selection' + regex=r'^user_mailers/backend/selection/$', + name='user_mailer_backend_selection', + view=UserMailerBackendSelectionView.as_view() ), url( - r'^user_mailers/(?P[a-zA-Z0-9_.]+)/create/$', - UserMailingCreateView.as_view(), name='user_mailer_create' + regex=r'^user_mailers/(?P[a-zA-Z0-9_.]+)/create/$', + name='user_mailer_create', view=UserMailingCreateView.as_view() ), url( - r'^user_mailers/(?P\d+)/delete/$', UserMailingDeleteView.as_view(), - name='user_mailer_delete' + regex=r'^user_mailers/(?P\d+)/delete/$', + name='user_mailer_delete', view=UserMailingDeleteView.as_view() ), url( - r'^user_mailers/(?P\d+)/edit/$', UserMailingEditView.as_view(), - name='user_mailer_edit' + regex=r'^user_mailers/(?P\d+)/edit/$', + name='user_mailer_edit', view=UserMailingEditView.as_view() ), url( - r'^user_mailers/(?P\d+)/log/$', - UserMailerLogEntryListView.as_view(), name='user_mailer_log' + regex=r'^user_mailers/(?P\d+)/log/$', + name='user_mailer_log', view=UserMailerLogEntryListView.as_view() ), url( - r'^user_mailers/(?P\d+)/test/$', - UserMailerTestView.as_view(), name='user_mailer_test' + regex=r'^user_mailers/(?P\d+)/test/$', + name='user_mailer_test', view=UserMailerTestView.as_view() ), url( - r'^user_mailers/$', UserMailerListView.as_view(), - name='user_mailer_list' + regex=r'^user_mailers/$', name='user_mailer_list', + view=UserMailerListView.as_view() ), ] diff --git a/mayan/apps/mailer/views.py b/mayan/apps/mailer/views.py index fc8cf4b63e..fcb47ff8b3 100644 --- a/mayan/apps/mailer/views.py +++ b/mayan/apps/mailer/views.py @@ -47,7 +47,8 @@ class MailDocumentView(MultipleObjectFormActionView): form_class = DocumentMailForm model = Document object_permission = permission_mailing_send_document - + object_permission_raise_404 = True + pk_url_kwarg = 'document_pk' success_message = _('%(count)d document queued for email delivery') success_message_plural = _( '%(count)d documents queued for email delivery' @@ -126,13 +127,17 @@ class UserMailerBackendSelectionView(FormView): def form_valid(self, form): backend = form.cleaned_data['backend'] return HttpResponseRedirect( - reverse('mailer:user_mailer_create', args=(backend,),) + reverse( + viewname='mailer:user_mailer_create', kwargs={ + 'class_path': backend + } + ) ) class UserMailingCreateView(SingleObjectDynamicFormCreateView): form_class = UserMailerDynamicForm - post_action_redirect = reverse_lazy('mailer:user_mailer_list') + post_action_redirect = reverse_lazy(viewname='mailer:user_mailer_list') view_permission = permission_user_mailer_create def get_backend(self): @@ -168,7 +173,9 @@ class UserMailingCreateView(SingleObjectDynamicFormCreateView): class UserMailingDeleteView(SingleObjectDeleteView): model = UserMailer object_permission = permission_user_mailer_delete - post_action_redirect = reverse_lazy('mailer:user_mailer_list') + object_permission_raise_404 = True + pk_url_kwarg = 'mailer_pk' + post_action_redirect = reverse_lazy(viewname='mailer:user_mailer_list') def get_extra_context(self): return { @@ -180,6 +187,8 @@ class UserMailingEditView(SingleObjectDynamicFormEditView): form_class = UserMailerDynamicForm model = UserMailer object_permission = permission_user_mailer_edit + object_permission_raise_404 = True + pk_url_kwarg = 'mailer_pk' def get_extra_context(self): return { @@ -206,14 +215,16 @@ class UserMailerLogEntryListView(SingleObjectListView): return { 'hide_object': True, 'object': self.get_user_mailer(), - 'title': _('Error log for mailing profile: %s') % self.get_user_mailer(), + 'title': _( + 'Error log for mailing profile: %s' + ) % self.get_user_mailer(), } def get_object_list(self): return self.get_user_mailer().error_log.all() def get_user_mailer(self): - return get_object_or_404(klass=UserMailer, pk=self.kwargs['pk']) + return get_object_or_404(klass=UserMailer, pk=self.kwargs['mailer_pk']) class UserMailerListView(SingleObjectListView): @@ -242,7 +253,6 @@ class UserMailerListView(SingleObjectListView): class UserMailerTestView(FormView): form_class = UserMailerTestForm - object_permission = permission_user_mailer_edit def form_valid(self, form): obj = self.get_object() @@ -253,11 +263,15 @@ class UserMailerTestView(FormView): obj.test(to=form.cleaned_data['email']) except Exception as exception: messages.error( - self.request, _('Error sending test message; %s.') % exception + request=self.request, message=_( + 'Error sending test message; %s.' + ) % exception ) else: messages.success( - self.request, _('Successfully sent test message.') + request=self.request, message=_( + 'Successfully sent test message.' + ) ) return super(UserMailerTestView, self).form_valid(form=form) @@ -271,10 +285,12 @@ class UserMailerTestView(FormView): } def get_object(self): - user_mailer = get_object_or_404(klass=UserMailer, pk=self.kwargs['pk']) - AccessControlList.objects.check_access( - permissions=permission_user_mailer_use, user=self.request.user, - obj=user_mailer + return get_object_or_404( + klass=self.get_queryset(), pk=self.kwargs['mailer_pk'] ) - return user_mailer + def get_queryset(self): + return AccessControlList.objects.filter_by_access( + permission=permission_user_mailer_use, + queryset=UserMailer.objects.all(), user=self.request.user + )