summaryrefslogtreecommitdiff
path: root/addons/website_sms
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_sms
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_sms')
-rw-r--r--addons/website_sms/models/website_visitor.py42
1 files changed, 20 insertions, 22 deletions
diff --git a/addons/website_sms/models/website_visitor.py b/addons/website_sms/models/website_visitor.py
index 74f54b06418..7a3fbd47e21 100644
--- a/addons/website_sms/models/website_visitor.py
+++ b/addons/website_sms/models/website_visitor.py
@@ -8,35 +8,33 @@ from odoo.exceptions import UserError
class WebsiteVisitor(models.Model):
_inherit = 'website.visitor'
- def _prepare_visitor_send_sms_values(self):
- if self.partner_id.mobile:
- return {
- 'res_model': 'res.partner',
- 'res_id': self.partner_id.id,
- 'partner_ids': [self.partner_id.id],
- 'number_field_name': 'mobile',
- }
- return {}
+ def _check_for_sms_composer(self):
+ """ Purpose of this method is to actualize visitor model prior to contacting
+ him. Used notably for inheritance purpose, when dealing with leads that
+ could update the visitor model. """
+ return bool(self.partner_id and (self.partner_id.mobile or self.partner_id.phone))
+
+ def _prepare_sms_composer_context(self):
+ return {
+ 'default_res_model': 'res.partner',
+ 'default_res_id': self.partner_id.id,
+ 'default_composition_mode': 'comment',
+ 'default_number_field_name': 'mobile' if self.partner_id.mobile else 'phone',
+ }
def action_send_sms(self):
self.ensure_one()
- visitor_sms_values = self._prepare_visitor_send_sms_values()
- if not visitor_sms_values:
- raise UserError(_("There is no mobile phone number linked to this visitor."))
-
- context = dict(self.env.context)
- context.update({
- 'default_res_model': visitor_sms_values['res_model'],
- 'default_res_id': visitor_sms_values['res_id'],
- 'default_composition_mode': 'comment',
- 'default_number_field_name': visitor_sms_values['number_field_name'],
- })
+ if not self._check_for_sms_composer():
+ raise UserError(_("There is no contact and/or no phone or mobile numbers linked this visitor."))
+ visitor_composer_ctx = self._prepare_sms_composer_context()
+ compose_ctx = dict(self.env.context)
+ compose_ctx.update(**visitor_composer_ctx)
return {
+ "name": _("Send SMS Text Message"),
"type": "ir.actions.act_window",
"res_model": "sms.composer",
"view_mode": 'form',
- "context": context,
- "name": "Send SMS Text Message",
+ "context": compose_ctx,
"target": "new",
}