Add mailer use event
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
--------
|
||||
|
||||
@@ -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)
|
||||
|
||||
11
mayan/apps/mailer/events.py
Normal file
11
mayan/apps/mailer/events.py
Normal 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')
|
||||
)
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
60
mayan/apps/mailer/tests/test_events.py
Normal file
60
mayan/apps/mailer/tests/test_events.py
Normal 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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user