mirror of https://github.com/OCA/social.git
[IMP] mail_tracking_mailgun: mass mailing manual tracking
Mass mailing are tracked from mail.trace as the don't store a message in the db. In order to gather the message_id and be able to do manual checks to mailgun, that's the table where we should get the message id. TT40816pull/1056/head
parent
22bc7c48d9
commit
062f38577b
|
@ -42,6 +42,7 @@ class MailTrackingEmail(models.Model):
|
||||||
mail_message_id = fields.Many2one(
|
mail_message_id = fields.Many2one(
|
||||||
string="Message", comodel_name="mail.message", readonly=True, index=True
|
string="Message", comodel_name="mail.message", readonly=True, index=True
|
||||||
)
|
)
|
||||||
|
message_id = fields.Char(compute="_compute_message_id")
|
||||||
mail_id = fields.Many2one(string="Email", comodel_name="mail.mail", readonly=True)
|
mail_id = fields.Many2one(string="Email", comodel_name="mail.mail", readonly=True)
|
||||||
partner_id = fields.Many2one(
|
partner_id = fields.Many2one(
|
||||||
string="Partner", comodel_name="res.partner", readonly=True
|
string="Partner", comodel_name="res.partner", readonly=True
|
||||||
|
@ -112,6 +113,15 @@ class MailTrackingEmail(models.Model):
|
||||||
groups="base.group_system",
|
groups="base.group_system",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@api.depends("mail_message_id")
|
||||||
|
def _compute_message_id(self):
|
||||||
|
"""This helper field will allow us to map the message_id from either the linked
|
||||||
|
mail.message or a mass.mailing mail.trace.
|
||||||
|
"""
|
||||||
|
self.message_id = False
|
||||||
|
for tracking in self.filtered("mail_message_id"):
|
||||||
|
tracking.message_id = tracking.mail_message_id.message_id
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
records = super().create(vals_list)
|
records = super().create(vals_list)
|
||||||
|
|
|
@ -202,12 +202,8 @@ class MailTrackingEmail(models.Model):
|
||||||
https://documentation.mailgun.com/en/latest/api-events.html
|
https://documentation.mailgun.com/en/latest/api-events.html
|
||||||
"""
|
"""
|
||||||
api_key, api_url, domain, *__ = self._mailgun_values()
|
api_key, api_url, domain, *__ = self._mailgun_values()
|
||||||
for tracking in self:
|
for tracking in self.filtered("message_id"):
|
||||||
if not tracking.mail_message_id:
|
message_id = tracking.message_id.replace("<", "").replace(">", "")
|
||||||
raise UserError(_("There is no tracked message!"))
|
|
||||||
message_id = tracking.mail_message_id.message_id.replace("<", "").replace(
|
|
||||||
">", ""
|
|
||||||
)
|
|
||||||
events = []
|
events = []
|
||||||
url = urljoin(api_url, "/v3/%s/events" % domain)
|
url = urljoin(api_url, "/v3/%s/events" % domain)
|
||||||
params = {
|
params = {
|
||||||
|
|
|
@ -7,10 +7,12 @@
|
||||||
<field name="inherit_id" ref="mail_tracking.view_mail_tracking_email_form" />
|
<field name="inherit_id" ref="mail_tracking.view_mail_tracking_email_form" />
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="state" position="before">
|
<field name="state" position="before">
|
||||||
|
<field name="message_id" invisible="1" />
|
||||||
<button
|
<button
|
||||||
name="action_manual_check_mailgun"
|
name="action_manual_check_mailgun"
|
||||||
type="object"
|
type="object"
|
||||||
string="Re-sync Mailgun"
|
string="Re-sync Mailgun"
|
||||||
|
attrs="{'invisible': [('message_id', '=', False)]}"
|
||||||
/>
|
/>
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
|
|
Loading…
Reference in New Issue