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>
64 lines
2.4 KiB
Python
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']
|