diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-01-15 13:20:33 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-02-13 15:29:40 +0000 |
| commit | 3a7b08e5cf566319725b0738efe34ede60e6ca88 (patch) | |
| tree | 478fdb0698b88e5e8e5104004a017da7921e13b7 /addons/website_crm/models | |
| parent | 1508705ab481a21f48f1aea2e635c51cc278e11e (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.py | 40 |
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() |
