Update mailer app
Sort arguments. Fix failing tests. Sort view classes. Replace get_object() with self.object in the delete and edit views. Use ExternalObjectMixin to simplify views. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -7,26 +7,26 @@ from mayan.apps.permissions import PermissionNamespace
|
||||
namespace = PermissionNamespace(label=_('Mailing'), name='mailing')
|
||||
|
||||
permission_mailing_link = namespace.add_permission(
|
||||
name='mail_link', label=_('Send document link via email')
|
||||
label=_('Send document link via email'), name='mail_link'
|
||||
)
|
||||
permission_mailing_send_document = namespace.add_permission(
|
||||
name='mail_document', label=_('Send document via email')
|
||||
label=_('Send document via email'), name='mail_document'
|
||||
)
|
||||
permission_view_error_log = namespace.add_permission(
|
||||
name='view_error_log', label=_('View system mailing error log')
|
||||
label=_('View system mailing error log'), name='view_error_log'
|
||||
)
|
||||
permission_user_mailer_create = namespace.add_permission(
|
||||
name='user_mailer_create', label=_('Create a mailing profile')
|
||||
label=_('Create a mailing profile'), name='user_mailer_create'
|
||||
)
|
||||
permission_user_mailer_delete = namespace.add_permission(
|
||||
name='user_mailer_delete', label=_('Delete a mailing profile')
|
||||
label=_('Delete a mailing profile'), name='user_mailer_delete'
|
||||
)
|
||||
permission_user_mailer_edit = namespace.add_permission(
|
||||
name='user_mailer_edit', label=_('Edit a mailing profile')
|
||||
)
|
||||
permission_user_mailer_view = namespace.add_permission(
|
||||
name='user_mailer_view', label=_('View a mailing profile')
|
||||
label=_('Edit a mailing profile'), name='user_mailer_edit'
|
||||
)
|
||||
permission_user_mailer_use = namespace.add_permission(
|
||||
name='user_mailer_use', label=_('Use a mailing profile')
|
||||
label=_('Use a mailing profile'), name='user_mailer_use'
|
||||
)
|
||||
permission_user_mailer_view = namespace.add_permission(
|
||||
label=_('View a mailing profile'), name='user_mailer_view'
|
||||
)
|
||||
|
||||
@@ -5,9 +5,9 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from mayan.apps.task_manager.classes import CeleryQueue
|
||||
|
||||
queue_mailing = CeleryQueue(
|
||||
name='mailing', label=_('Mailing')
|
||||
label=_('Mailing'), name='mailing'
|
||||
)
|
||||
queue_mailing.add_task_type(
|
||||
name='mayan.apps.mailer.tasks.task_send_document',
|
||||
label=_('Send document')
|
||||
label=_('Send document'),
|
||||
name='mayan.apps.mailer.tasks.task_send_document'
|
||||
)
|
||||
|
||||
@@ -9,7 +9,7 @@ from .literals import (
|
||||
DEFAULT_LINK_BODY_TEMPLATE, DEFAULT_LINK_SUBJECT_TEMPLATE
|
||||
)
|
||||
|
||||
namespace = Namespace(name='mailer', label=_('Mailing'))
|
||||
namespace = Namespace(label=_('Mailing'), name='mailer')
|
||||
|
||||
setting_link_subject_template = namespace.add_setting(
|
||||
default=DEFAULT_LINK_SUBJECT_TEMPLATE,
|
||||
|
||||
@@ -26,10 +26,6 @@ from .mixins import MailerTestMixin
|
||||
|
||||
|
||||
class MailerViewsTestCase(MailerTestMixin, GenericViewTestCase):
|
||||
def setUp(self):
|
||||
super(MailerViewsTestCase, self).setUp()
|
||||
self.login_user()
|
||||
|
||||
def test_user_mailer_create_view_no_permissions(self):
|
||||
response = self._request_user_mailer_create()
|
||||
|
||||
@@ -216,10 +212,10 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
response = self._request_document_link_send()
|
||||
|
||||
self.assertNotContains(
|
||||
response=response, text=self.user_mailer.label, status_code=200
|
||||
response=response, text=self.user_mailer.label, status_code=404
|
||||
)
|
||||
self.assertNotContains(
|
||||
response=response, text=self.document.label, status_code=200
|
||||
response=response, text=self.document.label, status_code=404
|
||||
)
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
|
||||
@@ -248,10 +244,10 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
|
||||
response = self._request_document_link_send()
|
||||
self.assertNotContains(
|
||||
response=response, text=self.user_mailer.label, status_code=302
|
||||
response=response, text=self.user_mailer.label, status_code=404
|
||||
)
|
||||
self.assertNotContains(
|
||||
response=response, text=self.document.label, status_code=302
|
||||
response=response, text=self.document.label, status_code=404
|
||||
)
|
||||
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
@@ -278,10 +274,10 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
|
||||
response = self._request_document_send()
|
||||
self.assertNotContains(
|
||||
response=response, text=self.user_mailer.label, status_code=200
|
||||
response=response, text=self.user_mailer.label, status_code=404
|
||||
)
|
||||
self.assertNotContains(
|
||||
response=response, text=self.document.label, status_code=200
|
||||
response=response, text=self.document.label, status_code=404
|
||||
)
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
|
||||
@@ -311,7 +307,7 @@ class DocumentViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase):
|
||||
|
||||
response = self._request_document_send()
|
||||
self.assertNotContains(
|
||||
response=response, text=self.document.label, status_code=302
|
||||
response=response, text=self.document.label, status_code=404
|
||||
)
|
||||
|
||||
self.assertEqual(len(mail.outbox), 0)
|
||||
|
||||
@@ -14,11 +14,6 @@ urlpatterns = [
|
||||
regex=r'^documents/(?P<document_id>\d+)/send/link/$',
|
||||
name='document_send_link', view=MailDocumentLinkView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^documents/multiple/send/link/$',
|
||||
name='document_multiple_send_link',
|
||||
view=MailDocumentLinkView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^documents/(?P<document_id>\d+)/send/$', name='document_send',
|
||||
view=MailDocumentView.as_view()
|
||||
@@ -27,6 +22,11 @@ urlpatterns = [
|
||||
regex=r'^documents/multiple/send/document/$',
|
||||
name='document_multiple_send', view=MailDocumentView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^documents/multiple/send/link/$',
|
||||
name='document_multiple_send_link',
|
||||
view=MailDocumentLinkView.as_view()
|
||||
),
|
||||
url(
|
||||
regex=r'^system_mailer/log/$', name='system_mailer_error_log',
|
||||
view=SystemMailerLogEntryListView.as_view()
|
||||
|
||||
@@ -14,6 +14,7 @@ from mayan.apps.common.generics import (
|
||||
SingleObjectDynamicFormCreateView, SingleObjectDynamicFormEditView,
|
||||
SingleObjectListView
|
||||
)
|
||||
from mayan.apps.common.mixins import ExternalObjectMixin
|
||||
from mayan.apps.documents.models import Document
|
||||
|
||||
from .classes import MailerBackend
|
||||
@@ -33,15 +34,6 @@ from .permissions import (
|
||||
from .tasks import task_send_document
|
||||
|
||||
|
||||
class SystemMailerLogEntryListView(SingleObjectListView):
|
||||
extra_context = {
|
||||
'hide_object': True,
|
||||
'title': _('Document mailing error log'),
|
||||
}
|
||||
model = LogEntry
|
||||
view_permission = permission_view_error_log
|
||||
|
||||
|
||||
class MailDocumentView(MultipleObjectFormActionView):
|
||||
as_attachment = True
|
||||
form_class = DocumentMailForm
|
||||
@@ -57,7 +49,7 @@ class MailDocumentView(MultipleObjectFormActionView):
|
||||
title_document = 'Email document: %s'
|
||||
|
||||
def get_extra_context(self):
|
||||
queryset = self.get_queryset()
|
||||
queryset = self.get_object_list()
|
||||
|
||||
result = {
|
||||
'submit_icon_class': icon_mail_document_submit,
|
||||
@@ -116,6 +108,15 @@ class MailDocumentLinkView(MailDocumentView):
|
||||
title_document = 'Email link for document: %s'
|
||||
|
||||
|
||||
class SystemMailerLogEntryListView(SingleObjectListView):
|
||||
extra_context = {
|
||||
'hide_object': True,
|
||||
'title': _('Document mailing error log'),
|
||||
}
|
||||
model = LogEntry
|
||||
view_permission = permission_view_error_log
|
||||
|
||||
|
||||
class UserMailerBackendSelectionView(FormView):
|
||||
extra_context = {
|
||||
'title': _('New mailing profile backend selection'),
|
||||
@@ -177,7 +178,7 @@ class UserMailingDeleteView(SingleObjectDeleteView):
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'title': _('Delete mailing profile: %s') % self.get_object(),
|
||||
'title': _('Delete mailing profile: %s') % self.object
|
||||
}
|
||||
|
||||
|
||||
@@ -189,11 +190,11 @@ class UserMailingEditView(SingleObjectDynamicFormEditView):
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'title': _('Edit mailing profile: %s') % self.get_object(),
|
||||
'title': _('Edit mailing profile: %s') % self.object
|
||||
}
|
||||
|
||||
def get_form_schema(self):
|
||||
backend = self.get_object().get_backend()
|
||||
backend = self.object.get_backend()
|
||||
result = {
|
||||
'fields': backend.fields,
|
||||
'widgets': getattr(backend, 'widgets', {})
|
||||
@@ -248,16 +249,17 @@ class UserMailerListView(SingleObjectListView):
|
||||
return {'fields': self.get_backend().fields}
|
||||
|
||||
|
||||
class UserMailerTestView(FormView):
|
||||
class UserMailerTestView(ExternalObjectMixin, FormView):
|
||||
external_object_class = UserMailer
|
||||
external_object_permission = permission_user_mailer_use
|
||||
external_object_pk_url_kwarg = 'mailer_id'
|
||||
form_class = UserMailerTestForm
|
||||
|
||||
def form_valid(self, form):
|
||||
obj = self.get_object()
|
||||
|
||||
# Separate getting the object from executing the test method to avoid
|
||||
# catching PermissionDenied exception.
|
||||
try:
|
||||
obj.test(to=form.cleaned_data['email'])
|
||||
self.external_object.test(to=form.cleaned_data['email'])
|
||||
except Exception as exception:
|
||||
messages.error(
|
||||
message=_(
|
||||
@@ -276,18 +278,7 @@ class UserMailerTestView(FormView):
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'hide_object': True,
|
||||
'object': self.get_object(),
|
||||
'object': self.external_object,
|
||||
'submit_label': _('Test'),
|
||||
'title': _('Test mailing profile: %s') % self.get_object(),
|
||||
'title': _('Test mailing profile: %s') % self.external_object,
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(
|
||||
klass=self.get_queryset(), pk=self.kwargs['mailer_id']
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
return AccessControlList.objects.restrict_queryset(
|
||||
permission=permission_user_mailer_use,
|
||||
queryset=UserMailer.objects.all(), user=self.request.user
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user