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_sms | |
| 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_sms')
| -rw-r--r-- | addons/website_sms/models/website_visitor.py | 42 |
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", } |
