odoo/ext/custom-addons/mailchimp/models/res_partner.py

41 lines
1.7 KiB
Python

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