[MIG] mail_tracking_mailgun: Migration to 16.0

pull/1247/head
Jesús Alan Ramos Rodríguez 2023-02-20 08:42:58 -06:00 committed by David
parent 8a65f7664a
commit f68e28996b
8 changed files with 49 additions and 13 deletions

View File

@ -7,7 +7,7 @@ Mail tracking for Mailgun
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:8f1f90f9d396cee0a417a6ad7820cf9eb0d9115c51ef82aaf19c13d84b2f2e4d
!! source digest: sha256:8920907240b8a1e7fceee196aa3c437a5c4ea4864588b43458c13b55d708ea36
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@ -17,13 +17,13 @@ Mail tracking for Mailgun
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github
:target: https://github.com/OCA/social/tree/15.0/mail_tracking_mailgun
:target: https://github.com/OCA/social/tree/16.0/mail_tracking_mailgun
:alt: OCA/social
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_tracking_mailgun
:target: https://translation.odoo-community.org/projects/social-16-0/social-16-0-mail_tracking_mailgun
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=15.0
:target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@ -67,6 +67,10 @@ You can also config partner email autocheck with this system parameter:
- `mailgun.auto_check_partner_email`: Set it to True.
You can also config timeout for mailgun with this system parameter:
- `mailgun.timeout`: Set it to a number of seconds.
Usage
=====
@ -102,7 +106,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/social/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/social/issues/new?body=module:%20mail_tracking_mailgun%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/social/issues/new?body=module:%20mail_tracking_mailgun%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
@ -149,6 +153,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/social <https://github.com/OCA/social/tree/15.0/mail_tracking_mailgun>`_ project on GitHub.
This module is part of the `OCA/social <https://github.com/OCA/social/tree/16.0/mail_tracking_mailgun>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@ -6,7 +6,7 @@
{
"name": "Mail tracking for Mailgun",
"summary": "Mail tracking and Mailgun webhooks integration",
"version": "15.0.1.1.1",
"version": "16.0.1.0.0",
"category": "Social Network",
"website": "https://github.com/OCA/social",
"author": "Tecnativa, Odoo Community Association (OCA)",

View File

@ -64,12 +64,12 @@ class MailTrackingController(main.MailTrackingController):
# See https://documentation.mailgun.com/en/latest/user_manual.html#routes
try:
self._mail_tracking_mailgun_webhook_verify(
**request.jsonrequest["signature"]
**request.dispatcher.jsonrequest["signature"]
)
except ValidationError as error:
raise NotAcceptable from error
# Process event
request.env["mail.tracking.email"].sudo()._mailgun_event_process(
request.jsonrequest["event-data"],
request.dispatcher.jsonrequest["event-data"],
self._request_metadata(),
)

View File

@ -217,6 +217,9 @@ class MailTrackingEmail(models.Model):
url,
auth=("api", api_key),
params=params,
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
if not res or res.status_code != 200:
raise UserError(_("Couldn't retrieve Mailgun information"))

View File

@ -61,6 +61,9 @@ class ResPartner(models.Model):
urljoin(params.api_url, "/v3/address/validate"),
auth=("api", params.validation_key),
params={"address": partner.email, "mailbox_verification": True},
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
if (
not res
@ -136,6 +139,9 @@ class ResPartner(models.Model):
res = requests.get(
urljoin(api_url, "/v3/%s/bounces/%s" % (domain, partner.email)),
auth=("api", api_key),
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
if res.status_code == 200 and not partner.email_bounced:
partner.email_bounced = True
@ -156,6 +162,9 @@ class ResPartner(models.Model):
urljoin(api_url, "/v3/%s/bounces" % domain),
auth=("api", api_key),
data={"address": partner.email},
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
partner.email_bounced = res.status_code == 200 and not partner.email_bounced
@ -172,6 +181,9 @@ class ResPartner(models.Model):
res = requests.delete(
urljoin(api_url, "/v3/%s/bounces/%s" % (domain, partner.email)),
auth=("api", api_key),
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
if res.status_code in (200, 404) and partner.email_bounced:
partner.email_bounced = False

View File

@ -10,3 +10,7 @@ To configure this module, you need to:
You can also config partner email autocheck with this system parameter:
- `mailgun.auto_check_partner_email`: Set it to True.
You can also config timeout for mailgun with this system parameter:
- `mailgun.timeout`: Set it to a number of seconds.

View File

@ -367,9 +367,9 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:8f1f90f9d396cee0a417a6ad7820cf9eb0d9115c51ef82aaf19c13d84b2f2e4d
!! source digest: sha256:8920907240b8a1e7fceee196aa3c437a5c4ea4864588b43458c13b55d708ea36
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/social/tree/15.0/mail_tracking_mailgun"><img alt="OCA/social" src="https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_tracking_mailgun"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/social&amp;target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/social/tree/16.0/mail_tracking_mailgun"><img alt="OCA/social" src="https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/social-16-0/social-16-0-mail_tracking_mailgun"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/social&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module integrates mail_tracking events with Mailgun webhooks.</p>
<p>Mailgun (<a class="reference external" href="https://www.mailgun.com/">https://www.mailgun.com/</a>) is a service that provides an e-mail
sending infrastructure through an SMTP server or via API. You can also
@ -419,6 +419,10 @@ you need to add <tt class="docutils literal">mail_tracking_mailgun</tt> addon to
<ul class="simple">
<li><cite>mailgun.auto_check_partner_email</cite>: Set it to True.</li>
</ul>
<p>You can also config timeout for mailgun with this system parameter:</p>
<ul class="simple">
<li><cite>mailgun.timeout</cite>: Set it to a number of seconds.</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-3">Usage</a></h1>
@ -451,7 +455,7 @@ Mailgun in Odoo. However, it doesnt come without its <a class="reference exte
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/social/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/social/issues/new?body=module:%20mail_tracking_mailgun%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/social/issues/new?body=module:%20mail_tracking_mailgun%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
@ -494,7 +498,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/social/tree/15.0/mail_tracking_mailgun">OCA/social</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/social/tree/16.0/mail_tracking_mailgun">OCA/social</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>

View File

@ -82,6 +82,9 @@ class ResConfigSettings(models.TransientModel):
webhooks = requests.get(
urljoin(params.api_url, "/v3/domains/%s/webhooks" % params.domain),
auth=("api", params.api_key),
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
webhooks.raise_for_status()
for event, data in webhooks.json()["webhooks"].items():
@ -100,6 +103,9 @@ class ResConfigSettings(models.TransientModel):
"/v3/domains/%s/webhooks/%s" % (params.domain, event),
),
auth=("api", params.api_key),
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
response.raise_for_status()
@ -116,6 +122,9 @@ class ResConfigSettings(models.TransientModel):
urljoin(params.api_url, "/v3/domains/%s/webhooks" % params.domain),
auth=("api", params.api_key),
data={"id": event, "url": [odoo_webhook]},
timeout=self.env["ir.config_parameter"]
.sudo()
.get_param("mailgun.timeout", 10),
)
# Assert correct registration
response.raise_for_status()