Files
odoo_source/addons/crm_mail_plugin/controllers/mail_plugin.py
T
std-odoo ab179fb600 [FIX] mail_plugin: avoid repeating company creation
Purpose
=======
Avoid creating / enriching multiple time the same company.

It can occur in many situation; when IAP do not return an email address
the the company, when the domain is blacklisted...

We also want to remove the field "iap_enrich_info" from the res.partner
model because this field can be heavy (JSON field) and the res.partner
model is used a lot.

Technical
=========
For this purpose, we create a new model <res.partner.iap> which will
store the IAP response and the requested domain.

So we can retrieve the previously enriched company regardless of the
partner's values

Task 2466653
See odoo/odoo/pull/68286
See odoo/upgrade/pull/2301

closes odoo/odoo#68286

Related: odoo/upgrade#2301
Related: odoo/enterprise#17426
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2021-04-01 14:23:07 +00:00

64 lines
2.4 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from odoo.http import request
from odoo.tools.misc import formatLang
from odoo.addons.mail_plugin.controllers import mail_plugin
_logger = logging.getLogger(__name__)
class MailPluginController(mail_plugin.MailPluginController):
def _fetch_partner_leads(self, partner, limit=5, offset=0):
"""
Returns an array containing partner leads, each lead will have the following structure :
{
id: the lead's id,
name: the lead's name,
expected_revenue: the expected revenue field value
probability: the value of the probability field,
recurring_revenue: the value of the recurring_revenue field if the lead has a recurring revenue
recurring_plan: the value of the recurring plan field if the lead has a recurring revenue
}
"""
partner_leads = request.env['crm.lead'].search(
[('partner_id', '=', partner.id)], offset=offset, limit=limit)
recurring_revenues = request.env.user.has_group('crm.group_use_recurring_revenues')
leads = []
for lead in partner_leads:
lead_values = {
'lead_id': lead.id,
'name': lead.name,
'expected_revenue': formatLang(request.env, lead.expected_revenue, monetary=True,
currency_obj=lead.company_currency),
'probability': lead.probability,
}
if recurring_revenues:
lead_values.update({
'recurring_revenue': formatLang(request.env, lead.recurring_revenue, monetary=True,
currency_obj=lead.company_currency),
'recurring_plan': lead.recurring_plan.name,
})
leads.append(lead_values)
return leads
def _get_contact_data(self, partner):
contact_values = super(MailPluginController, self)._get_contact_data(partner)
if not partner:
contact_values['leads'] = []
else:
contact_values['leads'] = self._fetch_partner_leads(partner)
return contact_values
def _mail_content_logging_models_whitelist(self):
return super(MailPluginController, self)._mail_content_logging_models_whitelist() + ['crm.lead']