summaryrefslogtreecommitdiff
path: root/addons/website_crm/models
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-01-15 13:20:33 +0000
committerThibault Delavallée <tde@odoo.com>2020-02-13 15:29:40 +0000
commit3a7b08e5cf566319725b0738efe34ede60e6ca88 (patch)
tree478fdb0698b88e5e8e5104004a017da7921e13b7 /addons/website_crm/models
parent1508705ab481a21f48f1aea2e635c51cc278e11e (diff)
[REF] website(_crm): improve code about contacting visitors
Purpose of this commit is to clean mail and SMS composer calls in website_crm and website_crm_sms by separating composer preparation (context, values) from customer preparation (check valid data exists, creating partner). Indeed most of message composer code is based on records having a partner_id correctly set, unless some templates are used that dynamically creates the partner. SMS composer is more tolerant and check for phone / mobile numbers to use. By the way we make the action name translatable, because why not. LINKS Spotted when working on task ID 2056759 (remove crm.partner.binding mixin) Community PR odoo/odoo#44970 Enterprise PR odoo/enterprise#8307
Diffstat (limited to 'addons/website_crm/models')
-rw-r--r--addons/website_crm/models/website_visitor.py40
1 files changed, 25 insertions, 15 deletions
diff --git a/addons/website_crm/models/website_visitor.py b/addons/website_crm/models/website_visitor.py
index 616ea37c563..a6e8c669363 100644
--- a/addons/website_crm/models/website_visitor.py
+++ b/addons/website_crm/models/website_visitor.py
@@ -44,19 +44,29 @@ class WebsiteVisitor(models.Model):
visitor.email = email[:-1] if email else False
visitor.mobile = mapped_data.get(visitor.id, {}).get('mobile')
- def _prepare_visitor_send_mail_values(self):
- visitor_mail_values = super(WebsiteVisitor, self)._prepare_visitor_send_mail_values()
- if self.lead_ids:
- lead = self.lead_ids._sort_by_confidence_level(reverse=True)[0]
- partner_id = self.partner_id.id
- if not self.partner_id:
- partner_id = lead.handle_partner_assignation(action='create')[lead.id]
- if not lead.partner_id:
- lead.partner_id = partner_id
+ def _check_for_message_composer(self):
+ check = super(WebsiteVisitor, self)._check_for_message_composer()
+ if not check and self.lead_ids:
+ sorted_leads = self.lead_ids._sort_by_confidence_level(reverse=True)
+ partners = sorted_leads.mapped('partner_id')
+ if not partners:
+ main_lead = self.lead_ids[0]
+ partner_id = main_lead.handle_partner_assignation(action='create')[main_lead.id]
+ if not main_lead.partner_id:
+ main_lead.partner_id = partner_id
self.partner_id = partner_id
- return {
- 'res_model': 'crm.lead',
- 'res_id': lead.id,
- 'partner_ids': [partner_id],
- }
- return visitor_mail_values
+ return True
+ return check
+
+ def _prepare_message_composer_context(self):
+ if not self.partner_id and self.lead_ids:
+ sorted_leads = self.lead_ids._sort_by_confidence_level(reverse=True)
+ lead_partners = sorted_leads.mapped('partner_id')
+ partner = lead_partners[0] if lead_partners else False
+ if partner:
+ return {
+ 'default_model': 'crm.lead',
+ 'default_res_id': sorted_leads[0].id,
+ 'default_partner_ids': partner.ids,
+ }
+ return super(WebsiteVisitor, self)._prepare_message_composer_context()