Add mailer use event

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-04-22 02:23:57 -04:00
parent ce0a6368f2
commit 7f0377a8c5
9 changed files with 300 additions and 163 deletions

View File

@@ -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.

View File

@@ -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
--------

View File

@@ -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)

View File

@@ -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')
)

View File

@@ -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):

View File

@@ -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
)
}
)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)