mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 11:51:05 -05:00
Allow global_merge_vars to be merged in with the per message dict, with keys in the latter taking precedent.
Update the docs accordingly.
This commit is contained in:
@@ -17,3 +17,4 @@ Sameer Al-Sakran
|
||||
Kyle Gibson
|
||||
Wes Winham
|
||||
nikolay-saskovets
|
||||
William Hector
|
||||
|
||||
@@ -285,12 +285,17 @@ class DjrillBackend(BaseEmailBackend):
|
||||
|
||||
# Allow simple python dicts in place of Mandrill
|
||||
# [{name:name, value:value},...] arrays...
|
||||
|
||||
# Allow merge of global and per message global_merge_var, the former taking precedent
|
||||
global_merge_vars = {}
|
||||
if 'global_merge_vars' in self.global_settings:
|
||||
msg_dict['global_merge_vars'] = self._expand_merge_vars(
|
||||
self.global_settings['global_merge_vars'])
|
||||
global_merge_vars.update(self.global_settings['global_merge_vars'])
|
||||
if hasattr(message, 'global_merge_vars'):
|
||||
global_merge_vars.update(message.global_merge_vars)
|
||||
if global_merge_vars:
|
||||
msg_dict['global_merge_vars'] = \
|
||||
self._expand_merge_vars(message.global_merge_vars)
|
||||
self._expand_merge_vars(global_merge_vars)
|
||||
|
||||
if hasattr(message, 'merge_vars'):
|
||||
# For testing reproducibility, we sort the recipients
|
||||
msg_dict['merge_vars'] = [
|
||||
|
||||
@@ -650,11 +650,21 @@ class DjrillMandrillGlobalFeatureTests(DjrillBackendMockAPITestCase):
|
||||
self.assertEqual(data['message']['url_strip_qs'], False)
|
||||
|
||||
def test_global_merge(self):
|
||||
# Test that global settings merge in
|
||||
self.message.global_merge_vars = {'GREETING': "Hello"}
|
||||
self.message.send()
|
||||
data = self.get_api_call_data()
|
||||
self.assertEqual(data['message']['global_merge_vars'],
|
||||
[{'name': "GREETING", 'content': "Hello"}])
|
||||
[{'name': "GREETING", 'content': "Hello"},
|
||||
{'name': 'TEST', 'content': 'djrill'}])
|
||||
|
||||
def test_global_merge_overwrite(self):
|
||||
# Test that global merge settings are overwritten
|
||||
self.message.global_merge_vars = {'TEST': "Hello"}
|
||||
self.message.send()
|
||||
data = self.get_api_call_data()
|
||||
self.assertEqual(data['message']['global_merge_vars'],
|
||||
[{'name': 'TEST', 'content': 'Hello'}])
|
||||
|
||||
|
||||
@override_settings(EMAIL_BACKEND="djrill.mail.backends.djrill.DjrillBackend")
|
||||
|
||||
@@ -118,6 +118,10 @@ using :setting:`MANDRILL_SETTINGS`. For Example::
|
||||
'track_opens': True,
|
||||
}
|
||||
|
||||
.. note::
|
||||
``merge_vars`` and ``recipient_metadata`` cannot be set globally. ``global_merge_vars`` is merged
|
||||
(see :attribute:`global_merge_vars`)
|
||||
|
||||
.. These attributes are in the same order as they appear in the Mandrill API docs...
|
||||
|
||||
.. attribute:: important
|
||||
@@ -211,6 +215,10 @@ using :setting:`MANDRILL_SETTINGS`. For Example::
|
||||
Merge data must be strings or other JSON-serializable types.
|
||||
(See :ref:`formatting-merge-data` for details.)
|
||||
|
||||
.. note::
|
||||
|
||||
If using :setting:`MANDRILL_SETTINGS` then the message ``dict`` will be merged and overwrite any duplicates.
|
||||
|
||||
.. attribute:: merge_vars
|
||||
|
||||
``dict``: per-recipient merge variables (most useful with :ref:`mandrill-templates`). The keys
|
||||
|
||||
Reference in New Issue
Block a user