Browse Source

[FIX] mail_tracking_mailgun: alternative domain

- In case the sending domain is different from the one configured in the
mail.domain.catchall setting.
pull/351/head
David 6 years ago
committed by Jairo Llopis
parent
commit
df32385dcb
  1. 2
      mail_tracking_mailgun/README.rst
  2. 2
      mail_tracking_mailgun/__manifest__.py
  3. 3
      mail_tracking_mailgun/models/mail_tracking_email.py
  4. 12
      mail_tracking_mailgun/tests/test_mailgun.py

2
mail_tracking_mailgun/README.rst

@ -36,6 +36,8 @@ parameters:
domain. domain.
- `mailgun.api_url`: It should be fine as it is, but it could change in the - `mailgun.api_url`: It should be fine as it is, but it could change in the
future. future.
- `mailgun.domain`: In case your sending domain is different from the one
configured in `mail.catchall.domain`.
- `mailgun.validation_key`: If you want to be able to check mail address - `mailgun.validation_key`: If you want to be able to check mail address
validity you must config this parameter with your account Public Validation validity you must config this parameter with your account Public Validation
Key. Key.

2
mail_tracking_mailgun/__manifest__.py

@ -6,7 +6,7 @@
{ {
"name": "Mail tracking for Mailgun", "name": "Mail tracking for Mailgun",
"summary": "Mail tracking and Mailgun webhooks integration", "summary": "Mail tracking and Mailgun webhooks integration",
"version": "11.0.1.0.3",
"version": "11.0.1.1.0",
"category": "Social Network", "category": "Social Network",
"website": "https://github.com/OCA/social", "website": "https://github.com/OCA/social",
"author": "Tecnativa, " "author": "Tecnativa, "

3
mail_tracking_mailgun/models/mail_tracking_email.py

@ -70,7 +70,8 @@ class MailTrackingEmail(models.Model):
raise ValidationError(_('There is no Mailgun API key!')) raise ValidationError(_('There is no Mailgun API key!'))
api_url = icp.get_param( api_url = icp.get_param(
'mailgun.api_url', 'https://api.mailgun.net/v3') 'mailgun.api_url', 'https://api.mailgun.net/v3')
domain = icp.get_param('mail.catchall.domain')
catchall_domain = icp.get_param('mail.catchall.domain')
domain = icp.get_param('mailgun.domain', catchall_domain)
if not domain: if not domain:
raise ValidationError(_('A Mailgun domain value is needed!')) raise ValidationError(_('A Mailgun domain value is needed!'))
validation_key = icp.get_param('mailgun.validation_key') validation_key = icp.get_param('mailgun.validation_key')

12
mail_tracking_mailgun/tests/test_mailgun.py

@ -104,6 +104,11 @@ class TestMailgun(TransactionCase):
self.test_event_delivered() self.test_event_delivered()
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
self.env['mail.tracking.email']._mailgun_values() self.env['mail.tracking.email']._mailgun_values()
# now we set an specific domain for Mailgun:
# i.e: we configure new EU zone without loosing old domain statistics
self.env['ir.config_parameter'].set_param(
'mailgun.domain', 'eu.example.com')
self.test_event_delivered()
@mute_logger('odoo.addons.mail_tracking_mailgun.models' @mute_logger('odoo.addons.mail_tracking_mailgun.models'
'.mail_tracking_email') '.mail_tracking_email')
@ -169,9 +174,10 @@ class TestMailgun(TransactionCase):
response = self.env['mail.tracking.email'].event_process( response = self.env['mail.tracking.email'].event_process(
None, self.event, self.metadata) None, self.event, self.metadata)
self.assertEqual('OK', response) self.assertEqual('OK', response)
event = self.event_search('delivered')
self.assertEqual(event.timestamp, float(self.timestamp))
self.assertEqual(event.recipient, self.recipient)
events = self.event_search('delivered')
for event in events:
self.assertEqual(event.timestamp, float(self.timestamp))
self.assertEqual(event.recipient, self.recipient)
# https://documentation.mailgun.com/user_manual.html#tracking-opens # https://documentation.mailgun.com/user_manual.html#tracking-opens
def test_event_opened(self): def test_event_opened(self):

Loading…
Cancel
Save