Files
odoo_source/addons/crm_livechat/models/chatbot_script_step.py
T
Fabio Barbero fc79bd1e0e [IMP] sm modules: "neutralise" genders
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>
2022-05-16 10:09:32 +02:00

66 lines
2.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, models, fields
class ChatbotScriptStep(models.Model):
_inherit = 'chatbot.script.step'
step_type = fields.Selection(
selection_add=[('create_lead', 'Create Lead')], ondelete={'create_lead': 'cascade'})
crm_team_id = fields.Many2one(
'crm.team', string='Sales Team', ondelete='set null',
help="Used in combination with 'create_lead' step type in order to automatically "
"assign the created lead/opportunity to the defined team")
def _chatbot_crm_prepare_lead_values(self, mail_channel, description):
return {
'description': description + mail_channel._get_channel_history(),
'name': _("%s's New Lead", self.chatbot_script_id.title),
'source_id': self.chatbot_script_id.source_id.id,
'team_id': self.crm_team_id.id,
'type': 'lead' if self.crm_team_id.use_leads else 'opportunity',
'user_id': False,
}
def _process_step(self, mail_channel):
self.ensure_one()
posted_message = super()._process_step(mail_channel)
if self.step_type == 'create_lead':
self._process_step_create_lead(mail_channel)
return posted_message
def _process_step_create_lead(self, mail_channel):
""" When reaching a 'create_lead' step, we extract the relevant information: visitor's
email, phone and conversation history to create a crm.lead.
We use the email and phone to update the environment partner's information (if not a public
user) if they differ from the current values.
The whole conversation history will be saved into the lead's description for reference.
This also allows having a question of type 'free_input_multi' to let the visitor explain
their interest / needs before creating the lead. """
customer_values = self._chatbot_prepare_customer_values(
mail_channel, create_partner=False, update_partner=True)
if self.env.user._is_public():
create_values = {
'email_from': customer_values['email'],
'phone': customer_values['phone'],
}
else:
partner = self.env.user.partner_id
create_values = {
'partner_id': partner.id,
'company_id': partner.company_id.id,
}
create_values.update(self._chatbot_crm_prepare_lead_values(
mail_channel, customer_values['description']))
self.env['crm.lead'].create(create_values)