Purpose ======= Change all masculine nouns in Odoo's code to neutral nouns (when possible), making sure that demo data is correctly handled. This is particularly important since our code is open source, and nowadays lots of machine learning models are trained on open source repositories. With this small change we contribute to training more "fair" models, and teaching models that "employee" or "user" != "he". This also affects some text visible by the user, hence making it more inclusive for Odoo users. Task-2853046 closes odoo/odoo#91292 Related: odoo/enterprise#27302 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
82 lines
3.3 KiB
Python
82 lines
3.3 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):
|
|
"""
|
|
Return the leads key only if the current user can create leads. So, if they can not
|
|
create leads, the section won't be visible on the addin side (like if the CRM
|
|
module was not installed on the database).
|
|
"""
|
|
contact_values = super(MailPluginController, self)._get_contact_data(partner)
|
|
|
|
if not request.env['crm.lead'].check_access_rights('create', raise_exception=False):
|
|
return contact_values
|
|
|
|
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):
|
|
models_whitelist = super(MailPluginController, self)._mail_content_logging_models_whitelist()
|
|
if not request.env['crm.lead'].check_access_rights('create', raise_exception=False):
|
|
return models_whitelist
|
|
return models_whitelist + ['crm.lead']
|
|
|
|
def _translation_modules_whitelist(self):
|
|
modules_whitelist = super(MailPluginController, self)._translation_modules_whitelist()
|
|
if not request.env['crm.lead'].check_access_rights('create', raise_exception=False):
|
|
return modules_whitelist
|
|
return modules_whitelist + ['crm_mail_plugin']
|