[FIX] mail_tracking_mailgun: alternative domain

- In case the sending domain is different from the one configured in the
mail.domain.catchall setting.
pull/514/head
David 2018-08-02 10:53:59 +02:00 committed by hveficent
parent d4348c1e43
commit eb57e0755e
4 changed files with 14 additions and 5 deletions

View File

@ -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.

View File

@ -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, "

View File

@ -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')

View File

@ -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') events = self.event_search('delivered')
self.assertEqual(event.timestamp, float(self.timestamp)) for event in events:
self.assertEqual(event.recipient, self.recipient) 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):