mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 11:51:05 -05:00
AnymailMessage: initialize anymail_status to empty AnymailStatus
Allows clients that use AnymailMessage or AnymailMessageMixin to access (e.g.) message.anymail_status.message_id without an AttributeError, even when using a non-Anymail backend (e.g., during testing). Also clarify docs of anymail_status attribute to note it only gets attached to a normal Django EmailMessage when sent through an Anymail backend. (May help with situation described in #36)
This commit is contained in:
@@ -28,7 +28,7 @@ class AnymailMessageMixin(object):
|
||||
self.template_id = kwargs.pop('template_id', UNSET)
|
||||
self.merge_data = kwargs.pop('merge_data', UNSET)
|
||||
self.merge_global_data = kwargs.pop('merge_global_data', UNSET)
|
||||
self.anymail_status = None
|
||||
self.anymail_status = AnymailStatus()
|
||||
|
||||
# noinspection PyArgumentList
|
||||
super(AnymailMessageMixin, self).__init__(*args, **kwargs)
|
||||
|
||||
@@ -212,6 +212,19 @@ ESP send status
|
||||
:class:`~django.core.mail.EmailMessage`, with a normalized version
|
||||
of the ESP's response.
|
||||
|
||||
Anymail backends create this attribute *as they process each message.*
|
||||
Before that, anymail_status won't be present on an ordinary Django
|
||||
EmailMessage or EmailMultiAlternatives---you'll get an :exc:`AttributeError`
|
||||
if you try to access it.
|
||||
|
||||
This might cause problems in your test cases, because Django
|
||||
`substitutes its own locmem email backend`_ during testing (so anymail_status
|
||||
won't be set even after sending). Your code should either guard against
|
||||
a missing anymail_status attribute, or use :class:`AnymailMessage`
|
||||
(or the :class:`AnymailMessageMixin`) which initializes its anymail_status
|
||||
attribute to a default AnymailStatus object.
|
||||
|
||||
After sending through an Anymail backend,
|
||||
:attr:`~AnymailMessage.anymail_status` will be an object with these attributes:
|
||||
|
||||
.. attribute:: message_id
|
||||
@@ -308,6 +321,10 @@ ESP send status
|
||||
message.anymail_status.esp_response.json()
|
||||
|
||||
|
||||
.. _substitutes its own locmem email backend:
|
||||
https://docs.djangoproject.com/en/stable/topics/testing/tools/#email-services
|
||||
|
||||
|
||||
.. _inline-images:
|
||||
|
||||
Inline images
|
||||
|
||||
Reference in New Issue
Block a user