Update mailer app to comply with MERCs 5 and 6
Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 = (',', ';')
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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'
|
||||
)
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -11,52 +11,53 @@ from .views import (
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
r'^documents/(?P<pk>\d+)/send/link/$', MailDocumentLinkView.as_view(),
|
||||
name='document_send_link'
|
||||
regex=r'^documents/(?P<document_pk>\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<pk>\d+)/send/$', MailDocumentView.as_view(),
|
||||
name='document_send'
|
||||
regex=r'^documents/(?P<document_pk>\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<class_path>[a-zA-Z0-9_.]+)/create/$',
|
||||
UserMailingCreateView.as_view(), name='user_mailer_create'
|
||||
regex=r'^user_mailers/(?P<class_path>[a-zA-Z0-9_.]+)/create/$',
|
||||
name='user_mailer_create', view=UserMailingCreateView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^user_mailers/(?P<pk>\d+)/delete/$', UserMailingDeleteView.as_view(),
|
||||
name='user_mailer_delete'
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/delete/$',
|
||||
name='user_mailer_delete', view=UserMailingDeleteView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^user_mailers/(?P<pk>\d+)/edit/$', UserMailingEditView.as_view(),
|
||||
name='user_mailer_edit'
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/edit/$',
|
||||
name='user_mailer_edit', view=UserMailingEditView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^user_mailers/(?P<pk>\d+)/log/$',
|
||||
UserMailerLogEntryListView.as_view(), name='user_mailer_log'
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\d+)/log/$',
|
||||
name='user_mailer_log', view=UserMailerLogEntryListView.as_view()
|
||||
),
|
||||
url(
|
||||
r'^user_mailers/(?P<pk>\d+)/test/$',
|
||||
UserMailerTestView.as_view(), name='user_mailer_test'
|
||||
regex=r'^user_mailers/(?P<mailer_pk>\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()
|
||||
),
|
||||
]
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user