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: res.partner

Compute Method: _compute_mailing_contact_id

Inputs Method Outputs
"""Assign the context-dependent (best) linked contact as determined by `MailingContact._get_sort_key`.

        Note: `mailing_contact_id` will be set to `False` if `default_list_ids` is provided and no linked contact
        has a `mailing.subscription` for it (opted out or not).
        This is particularly convenient to avoid creating duplicate contacts in `MailingContact._from_partners`
        if a newer contacts subscribed to the context mailing list exists but is not linked to the partner.
        """
self.mailing_contact_id = False
active_list_id = self.env['mailing.contact']._get_context_active_list_id()
subscribing_contacts = self.env['mailing.subscription'].search(
            Domain('contact_id', 'in', self.mailing_contact_ids.ids) & Domain('list_id', '=', active_list_id)
        ).contact_id
for partner in self.filtered('mailing_contact_ids'):
            partner.mailing_contact_id = partner.mailing_contact_ids.sorted(
                lambda c: c._get_sort_key(list_id=active_list_id, partner=partner))[-1]
            if active_list_id and partner.mailing_contact_id not in subscribing_contacts:
                partner.mailing_contact_id = False

Back to entity