diff --git a/djrill/mail/__init__.py b/djrill/mail/__init__.py index 021b149..80a5504 100644 --- a/djrill/mail/__init__.py +++ b/djrill/mail/__init__.py @@ -1,5 +1,7 @@ from django.core.mail import EmailMultiAlternatives +from djrill.exceptions import removed_in_djrill_2 + # DjrillMessage class is deprecated as of 0.2.0, but retained for # compatibility with existing code. (New code can just set Mandrill-specific @@ -12,6 +14,11 @@ class DjrillMessage(EmailMultiAlternatives): cc=None, from_name=None, tags=None, track_opens=True, track_clicks=True, preserve_recipients=None): + removed_in_djrill_2( + "DjrillMessage will be removed in Djrill 2.0. " + "Use django.core.mail.EmailMultiAlternatives instead." + ) + super(DjrillMessage, self).__init__(subject, body, from_email, to, bcc, connection, attachments, headers, alternatives, cc) diff --git a/djrill/tests/test_legacy.py b/djrill/tests/test_legacy.py index c1d558f..a2ef730 100644 --- a/djrill/tests/test_legacy.py +++ b/djrill/tests/test_legacy.py @@ -7,6 +7,7 @@ from django.core import mail from django.test import TestCase from djrill import MandrillAPIError, NotSupportedByMandrillError, DjrillAdminSite +from djrill.exceptions import RemovedInDjrill2 from djrill.mail import DjrillMessage from djrill.tests.mock_backend import DjrillBackendMockAPITestCase from djrill.tests.utils import reset_warning_registry @@ -42,6 +43,13 @@ class DjrillBackendDeprecationTests(DjrillBackendMockAPITestCase): self.assertEqual(data['message']['global_merge_vars'], [{'name': 'DATE', 'content': "2022-10-11 00:00:00"}]) + def test_deprecated_djrill_message_class(self): + """Djrill 0.2 deprecated DjrillMessage; 2.0 will drop it""" + self.assertWarnsMessage(DeprecationWarning, + "DjrillMessage will be removed in Djrill 2.0", + DjrillMessage) + + def assertWarnsMessage(self, warning, message, callable, *args, **kwds): """Checks that `callable` issues a warning of category `warning` containing `message`""" with warnings.catch_warnings(record=True) as warned: @@ -69,6 +77,12 @@ class DjrillMessageTests(TestCase): """ + def run(self, result=None): + with warnings.catch_warnings(): + # DjrillMessage deprecation is tested in test_deprecated_djrill_message_class above + warnings.filterwarnings('ignore', category=RemovedInDjrill2, + message="DjrillMessage will be removed in Djrill 2.0") + def setUp(self): self.subject = "Djrill baby djrill." self.from_name = "Tarzan" diff --git a/docs/history.rst b/docs/history.rst index 9e4bb32..e7bcb87 100644 --- a/docs/history.rst +++ b/docs/history.rst @@ -47,6 +47,14 @@ in debug mode.) or `datetime` values used in any Mandrill message attributes other than `send_at`. See :ref:`formatting-merge-data` for other options. +* **DjrillMessage class** + + The ``DjrillMessage`` class has not been needed since Djrill 0.2. + You can simply set Djrill message attributes on any Django + :class:`~django.core.mail.EmailMultiAlternatives` object. + Djrill 1.4 will report a `DeprecationWarning` if you are still + using ``DjrillMessage``. + Change Log ----------