from odoo import fields, models, api class ResPartner(models.Model): _inherit = 'res.partner' subscription_list_ids = fields.One2many('mail.mass_mailing.list_contact_rel', 'related_partner_id', string='Subscription Information', domain=[('mailchimp_list_id','!=',False)]) @api.multi def get_mailing_partner(self, email): query = """ SELECT id FROM mail_mass_mailing_contact WHERE LOWER(substring(email, '([^ ,;<@]+@[^> ,;]+)')) = LOWER(substring('{}', '([^ ,;<@]+@[^> ,;]+)'))""".format(email) self._cr.execute(query) return self._cr.fetchone() @api.model def create(self, vals): res = super(ResPartner, self).create(vals) if vals.get('email', False): mailing_contact = self.env['mail.mass_mailing.contact'] partner_record = self.get_mailing_partner(vals.get('email')) if partner_record: mailing_contact.browse(partner_record[0]).related_partner_id = res.id return res @api.multi def write(self, vals): if vals.get('email', False): mailing_contact = self.env['mail.mass_mailing.contact'] partner_record = self.get_mailing_partner(vals.get('email')) if partner_record: mailing_contact.browse(partner_record[0]).related_partner_id = self.id else: partner_record = self.get_mailing_partner(self.email) if partner_record: mailing_contact.browse(partner_record[0]).write({'related_partner_id':False}) res = super(ResPartner, self).write(vals) return res