Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.

Module: Email Marketing

Entity: mailing.contact

Compute Method: _compute_clicks_ratio

Inputs Method Outputs
  • id
grouped_traces = dict(self.env['mailing.trace'].sudo()._read_group(
            domain=[('model', '=', 'mailing.contact'), ('res_id', 'in', self.ids)],
            groupby=[('res_id')],
            aggregates=[('id:count_distinct')]
        ))
grouped_clicks = dict(self.env['link.tracker.click'].sudo()._read_group(
            domain=[('mailing_trace_id.model', '=', 'mailing.contact'), ('mailing_trace_id.res_id', 'in', self.ids)],
            groupby=[('mailing_trace_id.res_id')],
            aggregates=[('mailing_trace_id:count_distinct')]
        ))
for contact in self:
            contact.clicks_ratio = float_round(100 * grouped_clicks.get(contact.id, 0) / grouped_traces.get(contact.id, 1), precision_digits=2)

Back to entity