From baf20910a2bf159dac178fb5e9aad7892f6d0373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 2 Aug 2023 06:54:57 +0000 Subject: [PATCH] [IMP] phone_validation: improve default phone fields heuristic RATIONALE Simplify field management for mail / phone / sms flows. Make it working out of the box, easier to use and tweak. SPECIFICATIONS Support by default 'phone' and 'mobile' fields if present on model as phone fields to fetch when searching for a number. This allows to remove several of unnecessary overrides always doing the same thing. Task-3422449 (Mail, Phone: Move and improve field helpers) Part-of: odoo/odoo#130468 --- addons/crm/models/crm_lead.py | 4 ---- addons/mass_mailing_sms/models/mailing_contact.py | 3 --- addons/phone_validation/models/models.py | 4 +++- addons/phone_validation/models/res_partner.py | 5 ----- addons/sms/models/res_partner.py | 5 ----- addons/stock_sms/models/stock_picking.py | 5 ----- addons/test_mail_full/models/test_mail_models_mail.py | 3 +++ 7 files changed, 6 insertions(+), 23 deletions(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index 68a99774da8..54848433f96 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -2040,10 +2040,6 @@ class Lead(models.Model): break return result - def _phone_get_number_fields(self): - """ Use mobile or phone fields to compute sanitized phone number """ - return ['mobile', 'phone'] - @api.model def get_import_templates(self): return [{ diff --git a/addons/mass_mailing_sms/models/mailing_contact.py b/addons/mass_mailing_sms/models/mailing_contact.py index 4f27b8be792..cee28bcf8a9 100644 --- a/addons/mass_mailing_sms/models/mailing_contact.py +++ b/addons/mass_mailing_sms/models/mailing_contact.py @@ -9,6 +9,3 @@ class MailingContact(models.Model): _inherit = ['mailing.contact', 'mail.thread.phone'] mobile = fields.Char(string='Mobile') - - def _phone_get_number_fields(self): - return ['mobile'] diff --git a/addons/phone_validation/models/models.py b/addons/phone_validation/models/models.py index 52d60c5627a..68422b96496 100644 --- a/addons/phone_validation/models/models.py +++ b/addons/phone_validation/models/models.py @@ -15,7 +15,9 @@ class BaseModel(models.AbstractModel): def _phone_get_number_fields(self): """ This method returns the fields to use to find the number to use to send an SMS on a record. """ - return [] + return [ + number_fname for number_fname in ('mobile', 'phone') if number_fname in self + ] @api.model def _phone_get_country_field(self): diff --git a/addons/phone_validation/models/res_partner.py b/addons/phone_validation/models/res_partner.py index 7a3b92c5314..c93b466da61 100644 --- a/addons/phone_validation/models/res_partner.py +++ b/addons/phone_validation/models/res_partner.py @@ -37,8 +37,3 @@ class Partner(models.Model): country_fname = 'country_id' number = self[number_fname] return phone_validation.phone_sanitize_numbers_w_record([number], self, record_country_fname=country_fname, force_format=force_format)[number]['sanitized'] - - def _phone_get_number_fields(self): - """ Stand alone version, allowing to use it on partner model without - having any dependency on sms module. To cleanup in master (15.3 +).""" - return ['mobile', 'phone'] diff --git a/addons/sms/models/res_partner.py b/addons/sms/models/res_partner.py index 3215fa66832..74769276e5f 100644 --- a/addons/sms/models/res_partner.py +++ b/addons/sms/models/res_partner.py @@ -13,8 +13,3 @@ class ResPartner(models.Model): SMS recipients on partners are the partners themselves. """ return self - - def _phone_get_number_fields(self): - """ This method returns the fields to use to find the number to use to - send an SMS on a record. """ - return ['mobile', 'phone'] diff --git a/addons/stock_sms/models/stock_picking.py b/addons/stock_sms/models/stock_picking.py index dee5245f270..f7afe2448a2 100644 --- a/addons/stock_sms/models/stock_picking.py +++ b/addons/stock_sms/models/stock_picking.py @@ -45,11 +45,6 @@ class Picking(models.Model): 'context': self.env.context, } - def _sms_get_number_fields(self): - """ No phone or mobile field is available on ``stock.picking`` model. Instead SMS will - fallback on partner-based computation using ``_sms_get_partner_fields``. """ - return [] - def _sms_get_partner_fields(self): return ['partner_id'] diff --git a/addons/test_mail_full/models/test_mail_models_mail.py b/addons/test_mail_full/models/test_mail_models_mail.py index 7deea6c1d87..ea3e3bf8e5c 100644 --- a/addons/test_mail_full/models/test_mail_models_mail.py +++ b/addons/test_mail_full/models/test_mail_models_mail.py @@ -90,6 +90,9 @@ class MailTestRating(models.Model): def _mail_get_partner_fields(self): return ['customer_id'] + def _phone_get_number_fields(self): + return ['phone_nbr', 'mobile_nbr'] + def _rating_apply_get_default_subtype_id(self): return self.env['ir.model.data']._xmlid_to_res_id("test_mail_full.mt_mail_test_rating_rating_done")