From 7f0377a8c5710f9f94340098b05d22612e39f51b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 22 Apr 2019 02:23:57 -0400 Subject: [PATCH] Add mailer use event Signed-off-by: Roberto Rosario --- HISTORY.rst | 3 +- docs/releases/3.2.rst | 1 + mayan/apps/mailer/apps.py | 16 +- mayan/apps/mailer/events.py | 11 + mayan/apps/mailer/models.py | 15 +- mayan/apps/mailer/tests/mixins.py | 68 ++++++- mayan/apps/mailer/tests/test_events.py | 60 ++++++ mayan/apps/mailer/tests/test_models.py | 24 +-- mayan/apps/mailer/tests/test_views.py | 265 ++++++++++++------------- 9 files changed, 300 insertions(+), 163 deletions(-) create mode 100644 mayan/apps/mailer/events.py create mode 100644 mayan/apps/mailer/tests/test_events.py diff --git a/HISTORY.rst b/HISTORY.rst index d8b045d2bd..5039871436 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -107,7 +107,8 @@ * Add support for showing the current user's events. * Add support kwargs to the SourceColumn class. * Improve the event widgets, views and tests. - +* Add mailer use event. + 3.1.11 (2019-04-XX) =================== * Fix multiple tag selection wizard step. diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index a6402d28e0..d7e4dc93b9 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -139,6 +139,7 @@ Other changes * Add support for showing the current user's events. * Add support kwargs to the SourceColumn class. * Improve the event widgets, views and tests. +* Add mailer use event. Removals -------- diff --git a/mayan/apps/mailer/apps.py b/mayan/apps/mailer/apps.py index 99803b8ecb..867c4f64ec 100644 --- a/mayan/apps/mailer/apps.py +++ b/mayan/apps/mailer/apps.py @@ -14,10 +14,15 @@ from mayan.apps.common.menus import ( menu_tools ) from mayan.apps.common.widgets import TwoStateWidget +from mayan.apps.events import ModelEventType +from mayan.apps.events.links import ( + link_events_for_object, link_object_event_types_user_subcriptions_list +) from mayan.apps.navigation import SourceColumn from mayan.celery import app from .classes import MailerBackend +from .events import event_email_sent from .links import ( link_send_document_link, link_send_document, link_send_multiple_document, link_send_multiple_document_link, link_system_mailer_error_log, @@ -42,6 +47,7 @@ class MailerApp(MayanAppConfig): def ready(self): super(MailerApp, self).ready() + from actstream import registry Document = apps.get_model( app_label='documents', model_name='Document' @@ -52,6 +58,10 @@ class MailerApp(MayanAppConfig): MailerBackend.initialize() + ModelEventType.register( + model=UserMailer, event_types=(event_email_sent,) + ) + SourceColumn( source=LogEntry, label=_('Date and time'), attribute='datetime' ) @@ -105,7 +115,9 @@ class MailerApp(MayanAppConfig): menu_list_facet.bind_links( links=( - link_acl_list, link_user_mailer_log_list + link_acl_list, link_events_for_object, + link_object_event_types_user_subcriptions_list, + link_user_mailer_log_list ), sources=(UserMailer,) ) @@ -140,3 +152,5 @@ class MailerApp(MayanAppConfig): menu_tools.bind_links(links=(link_system_mailer_error_log,)) menu_setup.bind_links(links=(link_user_mailer_setup,)) + + registry.register(UserMailer) diff --git a/mayan/apps/mailer/events.py b/mayan/apps/mailer/events.py new file mode 100644 index 0000000000..881c2b214c --- /dev/null +++ b/mayan/apps/mailer/events.py @@ -0,0 +1,11 @@ +from __future__ import absolute_import, unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from mayan.apps.events import EventTypeNamespace + +namespace = EventTypeNamespace(name='mailing', label=_('Mailing')) + +event_email_sent = namespace.add_event_type( + name='email_send', label=_('Email sent') +) diff --git a/mayan/apps/mailer/models.py b/mayan/apps/mailer/models.py index f10e781c47..4104b6471b 100644 --- a/mayan/apps/mailer/models.py +++ b/mayan/apps/mailer/models.py @@ -5,12 +5,13 @@ import logging from django.contrib.sites.models import Site from django.core import mail -from django.db import models +from django.db import models, transaction from django.template import Context, Template from django.utils.html import strip_tags from django.utils.module_loading import import_string from django.utils.translation import ugettext_lazy as _ +from .events import event_email_sent from .managers import UserMailerManager from .utils import split_recipient_list @@ -125,7 +126,7 @@ class UserMailer(models.Model): return super(UserMailer, self).save(*args, **kwargs) - def send(self, to, subject='', body='', attachments=None): + def send(self, to, subject='', body='', attachments=None, _event_action_object=None, _user=None): """ Send a simple email. There is no document or template knowledge. attachments is a list of dictionaries with the keys: @@ -150,14 +151,19 @@ class UserMailer(models.Model): email_message.attach_alternative(body, 'text/html') + with transaction.atomic(): try: email_message.send() except Exception as exception: self.error_log.create(message=exception) else: self.error_log.all().delete() + event_email_sent.commit( + actor=_user, action_object=_event_action_object, + target=self + ) - def send_document(self, document, to, subject='', body='', as_attachment=False): + def send_document(self, document, to, subject='', body='', as_attachment=False, _user=None): """ Send a document using this user mailing profile. """ @@ -190,7 +196,8 @@ class UserMailer(models.Model): return self.send( attachments=attachments, body=body_html_content, - subject=subject_text, to=to, + subject=subject_text, to=to, _event_action_object=document, + _user=_user ) def test(self, to): diff --git a/mayan/apps/mailer/tests/mixins.py b/mayan/apps/mailer/tests/mixins.py index 3cee7df777..14f01e7157 100644 --- a/mayan/apps/mailer/tests/mixins.py +++ b/mayan/apps/mailer/tests/mixins.py @@ -5,14 +5,16 @@ import json from ..models import UserMailer from .literals import ( - TEST_EMAIL_FROM_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, + TEST_EMAIL_ADDRESS, + TEST_EMAIL_FROM_ADDRESS, + TEST_USER_MAILER_BACKEND_PATH, TEST_USER_MAILER_LABEL ) class MailerTestMixin(object): - def _create_user_mailer(self): - self.user_mailer = UserMailer.objects.create( + def _create_test_user_mailer(self): + self.test_user_mailer = UserMailer.objects.create( default=True, enabled=True, label=TEST_USER_MAILER_LABEL, @@ -23,3 +25,63 @@ class MailerTestMixin(object): } ) ) + + +class MailerViewTestMixin(object): + def _request_test_document_link_send_view(self): + return self.post( + viewname='mailer:send_document_link', kwargs={ + 'pk': self.test_document.pk + }, data={ + 'email': getattr( + self, 'test_email_address', TEST_EMAIL_ADDRESS + ), + 'user_mailer': self.test_user_mailer.pk + }, + ) + + def _request_test_document_send_view(self): + return self.post( + viewname='mailer:send_document', kwargs={ + 'pk': self.test_document.pk + }, data={ + 'email': getattr( + self, 'test_email_address', TEST_EMAIL_ADDRESS + ), + 'user_mailer': self.test_user_mailer.pk + } + ) + + def _request_test_user_mailer_create_view(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_test_user_mailer_delete_view(self): + return self.post( + viewname='mailer:user_mailer_delete', kwargs={ + 'pk': self.test_user_mailer.pk + } + ) + + def _request_test_user_mailer_list_view(self): + return self.get( + viewname='mailer:user_mailer_list', + ) + + def _request_test_user_mailer_test_view(self): + return self.post( + viewname='mailer:user_mailer_test', kwargs={ + 'pk': self.test_user_mailer.pk + }, data={ + 'email': getattr( + self, 'test_email_address', TEST_EMAIL_ADDRESS + ) + } + ) diff --git a/mayan/apps/mailer/tests/test_events.py b/mayan/apps/mailer/tests/test_events.py new file mode 100644 index 0000000000..545edf9b38 --- /dev/null +++ b/mayan/apps/mailer/tests/test_events.py @@ -0,0 +1,60 @@ +from __future__ import unicode_literals + +from django.core import mail + +from actstream.models import Action + +from mayan.apps.common.tests import GenericViewTestCase +from mayan.apps.documents.tests import DocumentTestMixin + +from ..permissions import ( + permission_mailing_send_document, permission_user_mailer_use +) + +from ..events import event_email_sent + +from .mixins import MailerTestMixin, MailerViewTestMixin + + +class MailerEventsTestCase(DocumentTestMixin, MailerTestMixin, MailerViewTestMixin, GenericViewTestCase): + auto_upload_document = False + + def setUp(self): + super(MailerEventsTestCase, self).setUp() + self._create_test_user_mailer() + + def test_email_send_event(self): + Action.objects.all().delete() + + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) + + response = self._request_test_user_mailer_test_view() + + self.assertEqual(response.status_code, 302) + self.assertEqual(len(mail.outbox), 1) + + self.assertEqual(Action.objects.last().target, self.test_user_mailer) + self.assertEqual(Action.objects.last().verb, event_email_sent.id) + self.assertEqual(Action.objects.last().action_object, None) + + def test_document_email_send_event(self): + self.upload_document() + Action.objects.all().delete() + + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) + self.grant_access( + obj=self.test_document, permission=permission_mailing_send_document + ) + + response = self._request_test_document_send_view() + + self.assertEqual(response.status_code, 302) + self.assertEqual(len(mail.outbox), 1) + + self.assertEqual(Action.objects.last().target, self.test_user_mailer) + self.assertEqual(Action.objects.last().verb, event_email_sent.id) + self.assertEqual(Action.objects.last().action_object, self.test_document) diff --git a/mayan/apps/mailer/tests/test_models.py b/mayan/apps/mailer/tests/test_models.py index 0e98e7f88b..c60d285e3f 100644 --- a/mayan/apps/mailer/tests/test_models.py +++ b/mayan/apps/mailer/tests/test_models.py @@ -16,16 +16,16 @@ from .mixins import MailerTestMixin class ModelTestCase(MailerTestMixin, GenericDocumentTestCase): def test_send_simple(self): - self._create_user_mailer() - self.user_mailer.send(to=TEST_EMAIL_ADDRESS) + self._create_test_user_mailer() + self.test_user_mailer.send(to=TEST_EMAIL_ADDRESS) 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_send_simple_with_html(self): - self._create_user_mailer() - self.user_mailer.send(to=TEST_EMAIL_ADDRESS, body=TEST_BODY_HTML) + self._create_test_user_mailer() + self.test_user_mailer.send(to=TEST_EMAIL_ADDRESS, body=TEST_BODY_HTML) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -33,8 +33,8 @@ class ModelTestCase(MailerTestMixin, GenericDocumentTestCase): self.assertEqual(mail.outbox[0].alternatives[0][0], TEST_BODY_HTML) def test_send_attachment(self): - self._create_user_mailer() - self.user_mailer.send_document( + self._create_test_user_mailer() + self.test_user_mailer.send_document( to=TEST_EMAIL_ADDRESS, document=self.document, as_attachment=True ) @@ -50,8 +50,8 @@ class ModelTestCase(MailerTestMixin, GenericDocumentTestCase): ) def test_send_multiple_recipients_comma(self): - self._create_user_mailer() - self.user_mailer.send(to=TEST_RECIPIENTS_MULTIPLE_COMMA) + self._create_test_user_mailer() + self.test_user_mailer.send(to=TEST_RECIPIENTS_MULTIPLE_COMMA) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -60,8 +60,8 @@ class ModelTestCase(MailerTestMixin, GenericDocumentTestCase): ) def test_send_multiple_recipients_semicolon(self): - self._create_user_mailer() - self.user_mailer.send(to=TEST_RECIPIENTS_MULTIPLE_SEMICOLON) + self._create_test_user_mailer() + self.test_user_mailer.send(to=TEST_RECIPIENTS_MULTIPLE_SEMICOLON) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -70,8 +70,8 @@ class ModelTestCase(MailerTestMixin, GenericDocumentTestCase): ) def test_send_multiple_recipient_mixed(self): - self._create_user_mailer() - self.user_mailer.send(to=TEST_RECIPIENTS_MULTIPLE_MIXED) + self._create_test_user_mailer() + self.test_user_mailer.send(to=TEST_RECIPIENTS_MULTIPLE_MIXED) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) diff --git a/mayan/apps/mailer/tests/test_views.py b/mayan/apps/mailer/tests/test_views.py index fce44c68a6..662cf5ff88 100644 --- a/mayan/apps/mailer/tests/test_views.py +++ b/mayan/apps/mailer/tests/test_views.py @@ -12,105 +12,59 @@ from ..permissions import ( ) from .literals import ( - TEST_EMAIL_ADDRESS, TEST_EMAIL_FROM_ADDRESS, TEST_USER_MAILER_BACKEND_PATH, - TEST_USER_MAILER_LABEL, TEST_RECIPIENTS_MULTIPLE_COMMA, + TEST_EMAIL_ADDRESS, TEST_EMAIL_FROM_ADDRESS, 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 ) from .mailers import TestBackend -from .mixins import MailerTestMixin +from .mixins import MailerTestMixin, MailerViewTestMixin -class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): - def setUp(self): - super(MailerViewsTestCase, self).setUp() - self.login_user() - - def _request_document_link_send(self): - return self.post( - 'mailer:send_document_link', args=(self.document.pk,), - data={ - 'email': getattr( - self, 'test_email_address', TEST_EMAIL_ADDRESS - ), - 'user_mailer': self.user_mailer.pk - }, - ) - - def _request_document_send(self): - return self.post( - 'mailer:send_document', args=(self.document.pk,), - data={ - 'email': getattr( - self, 'test_email_address', TEST_EMAIL_ADDRESS - ), - 'user_mailer': self.user_mailer.pk - }, - ) - - def _request_user_mailer_create(self): - return self.post( - 'mailer:user_mailer_create', args=( - TEST_USER_MAILER_BACKEND_PATH, - ), data={ - 'default': True, - 'enabled': True, - 'label': TEST_USER_MAILER_LABEL, - }, follow=True - ) - - def _request_user_mailer_delete(self): - return self.post( - 'mailer:user_mailer_delete', args=(self.user_mailer.pk,) - ) - - def _request_user_mailer_test(self): - return self.post( - 'mailer:user_mailer_test', args=(self.user_mailer.pk,), data={ - 'email': getattr( - self, 'test_email_address', TEST_EMAIL_ADDRESS - ) - }, follow=True - ) - +class MailerViewsTestCase(MailerTestMixin, MailerViewTestMixin, GenericDocumentViewTestCase): def test_mail_link_view_no_permissions(self): - self._create_user_mailer() + self._create_test_user_mailer() - response = self._request_document_link_send() + response = self._request_test_document_link_send_view() self.assertContains( - response, 'Select a valid choice', status_code=200 + response=response, text='Select a valid choice', status_code=200 ) - def test_mail_link_view_with_permission(self): - self._create_user_mailer() + def test_mail_link_view_with_access(self): + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_link) - self.grant_permission(permission=permission_user_mailer_use) - - self._request_document_link_send() + self.grant_access( + obj=self.test_document, permission=permission_mailing_link + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) + self._request_test_document_link_send_view() 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_document_view_no_permissions(self): - self._create_user_mailer() + self._create_test_user_mailer() - response = self._request_document_send() + response = self._request_test_document_send_view() self.assertContains( - response, 'Select a valid choice', status_code=200 + response=response, text='Select a valid choice', status_code=200 ) - def test_mail_document_view_with_permission(self): - self._create_user_mailer() + def test_mail_document_view_with_access(self): + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_send_document) - self.grant_permission(permission=permission_user_mailer_use) - - self._request_document_send() + self.grant_access( + obj=self.test_document, permission=permission_mailing_send_document + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) + self._request_test_document_send_view() 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]) @@ -118,101 +72,98 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): def test_user_mailer_create_view_no_permissions(self): self.grant_permission(permission=permission_user_mailer_view) - response = self._request_user_mailer_create() - + response = self._request_test_user_mailer_create_view() self.assertNotContains( response, text=TestBackend.label, status_code=403 ) + self.assertEqual(UserMailer.objects.count(), 0) def test_user_mailer_create_view_with_permissions(self): self.grant_permission(permission=permission_user_mailer_create) self.grant_permission(permission=permission_user_mailer_view) - response = self._request_user_mailer_create() - - self.assertContains( - response, text=TestBackend.label, status_code=200 - ) + response = self._request_test_user_mailer_create_view() + self.assertEqual(response.status_code, 302) self.assertEqual(UserMailer.objects.count(), 1) def test_user_mailer_delete_view_no_permissions(self): - self._create_user_mailer() + self._create_test_user_mailer() - self._request_user_mailer_delete() + response = self._request_test_user_mailer_delete_view() + self.assertEqual(response.status_code, 403) self.assertQuerysetEqual( - UserMailer.objects.all(), (repr(self.user_mailer),) + UserMailer.objects.all(), (repr(self.test_user_mailer),) ) def test_user_mailer_delete_view_with_access(self): - self._create_user_mailer() + self._create_test_user_mailer() self.grant_access( - obj=self.user_mailer, permission=permission_user_mailer_delete + obj=self.test_user_mailer, permission=permission_user_mailer_delete ) - self._request_user_mailer_delete() + response = self._request_test_user_mailer_delete_view() + self.assertEqual(response.status_code, 302) self.assertEqual(UserMailer.objects.count(), 0) def test_user_mailer_list_view_no_permissions(self): - self._create_user_mailer() + self._create_test_user_mailer() - response = self.get( - 'mailer:user_mailer_list', - ) + response = self._request_test_user_mailer_list_view() self.assertNotContains( - response, text=self.user_mailer.label, status_code=200 + response, text=self.test_user_mailer.label, status_code=200 ) - def test_user_mailer_list_view_with_permissions(self): - self._create_user_mailer() + def test_user_mailer_list_view_with_access(self): + self._create_test_user_mailer() - self.grant_permission(permission=permission_user_mailer_view) - - response = self.get( - 'mailer:user_mailer_list', + self.grant_access( + obj=self.test_document, permission=permission_mailing_send_document + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_view ) + response = self._request_test_user_mailer_list_view() self.assertContains( - response, text=self.user_mailer.label, status_code=200 + response=response, text=self.test_user_mailer.label, status_code=200 ) def test_user_mailer_test_view_no_permissions(self): - self._create_user_mailer() - - response = self._request_user_mailer_test() + self._create_test_user_mailer() + response = self._request_test_user_mailer_test_view() self.assertEqual(response.status_code, 403) self.assertEqual(len(mail.outbox), 0) def test_user_mailer_test_view_with_access(self): - self._create_user_mailer() + self._create_test_user_mailer() self.grant_access( - obj=self.user_mailer, permission=permission_user_mailer_use + obj=self.test_user_mailer, permission=permission_user_mailer_use ) - response = self._request_user_mailer_test() - - self.assertEqual(response.status_code, 200) + response = self._request_test_user_mailer_test_view() + 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_send_multiple_recipients_comma(self): - self._create_user_mailer() + self._create_test_user_mailer() self.grant_access( - obj=self.user_mailer, permission=permission_user_mailer_use + obj=self.test_user_mailer, permission=permission_user_mailer_use ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_COMMA - response = self._request_user_mailer_test() - self.assertEqual(response.status_code, 200) + response = self._request_test_user_mailer_test_view() + 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( @@ -220,15 +171,15 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_send_multiple_recipients_mixed(self): - self._create_user_mailer() + self._create_test_user_mailer() self.grant_access( - obj=self.user_mailer, permission=permission_user_mailer_use + obj=self.test_user_mailer, permission=permission_user_mailer_use ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_MIXED - response = self._request_user_mailer_test() - self.assertEqual(response.status_code, 200) + response = self._request_test_user_mailer_test_view() + 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( @@ -236,15 +187,15 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_send_multiple_recipients_semicolon(self): - self._create_user_mailer() + self._create_test_user_mailer() self.grant_access( - obj=self.user_mailer, permission=permission_user_mailer_use + obj=self.test_user_mailer, permission=permission_user_mailer_use ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_SEMICOLON - response = self._request_user_mailer_test() - self.assertEqual(response.status_code, 200) + response = self._request_test_user_mailer_test_view() + 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( @@ -252,13 +203,18 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_mail_link_view_recipients_comma(self): - self._create_user_mailer() + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_link) - self.grant_permission(permission=permission_user_mailer_use) + self.grant_access( + obj=self.test_document, permission=permission_mailing_link + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_COMMA - self._request_document_link_send() + response = self._request_test_document_link_send_view() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -267,13 +223,18 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_mail_link_view_recipients_mixed(self): - self._create_user_mailer() + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_link) - self.grant_permission(permission=permission_user_mailer_use) + self.grant_access( + obj=self.test_document, permission=permission_mailing_link + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_MIXED - self._request_document_link_send() + response = self._request_test_document_link_send_view() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -282,13 +243,18 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_mail_link_view_recipients_semicolon(self): - self._create_user_mailer() + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_link) - self.grant_permission(permission=permission_user_mailer_use) + self.grant_access( + obj=self.test_document, permission=permission_mailing_link + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_SEMICOLON - self._request_document_link_send() + response = self._request_test_document_link_send_view() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -297,13 +263,18 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_mail_document_view_recipients_comma(self): - self._create_user_mailer() + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_send_document) - self.grant_permission(permission=permission_user_mailer_use) + self.grant_access( + obj=self.test_document, permission=permission_mailing_send_document + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_COMMA - self._request_document_send() + response = self._request_test_document_send_view() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -312,13 +283,18 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_mail_document_view_recipients_mixed(self): - self._create_user_mailer() + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_send_document) - self.grant_permission(permission=permission_user_mailer_use) + self.grant_access( + obj=self.test_document, permission=permission_mailing_send_document + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_MIXED - self._request_document_send() + response = self._request_test_document_send_view() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS) @@ -327,13 +303,18 @@ class MailerViewsTestCase(MailerTestMixin, GenericDocumentViewTestCase): ) def test_mail_document_view_recipients_semicolon(self): - self._create_user_mailer() + self._create_test_user_mailer() - self.grant_permission(permission=permission_mailing_send_document) - self.grant_permission(permission=permission_user_mailer_use) + self.grant_access( + obj=self.test_document, permission=permission_mailing_send_document + ) + self.grant_access( + obj=self.test_user_mailer, permission=permission_user_mailer_use + ) self.test_email_address = TEST_RECIPIENTS_MULTIPLE_SEMICOLON - self._request_document_send() + response = self._request_test_document_send_view() + self.assertEqual(response.status_code, 302) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].from_email, TEST_EMAIL_FROM_ADDRESS)