From 416569c74fa9c342fb8e8474220054e42102614e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 21 May 2019 10:40:24 +0000 Subject: [PATCH 1/5] [FIX] sms: correctly compute numbers based on partners message_post_with_sms method allow to give either numbers, either partners or to fall back on default computation. Giving explicit partners does not work because of wrong indentation in code not fetching their numbers. Related to task 1922163 Linked to PR #33567 --- addons/sms/models/mail_thread.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sms/models/mail_thread.py b/addons/sms/models/mail_thread.py index 1fb62a72de4..a439487e4e9 100644 --- a/addons/sms/models/mail_thread.py +++ b/addons/sms/models/mail_thread.py @@ -39,8 +39,8 @@ class MailThread(models.AbstractModel): if not partners: partners = self._get_default_sms_recipients() - # Collect numbers, we will consider the message to be sent if at least one number can be found - numbers = list(set([i.mobile for i in partners if i.mobile])) + # Collect numbers, we will consider the message to be sent if at least one number can be found + numbers = list(set([i.mobile for i in partners if i.mobile])) if numbers: try: From 269d832b0d9fb4e14304125e2434ef1e93ffd858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 21 May 2019 12:14:59 +0000 Subject: [PATCH 2/5] [FIX] sms: correctly remove unwanted spaces in phone numbers Formatting / parsing of numbers may add spaces. Related to task 1922163 Linked to PR #33567 --- addons/sms/wizard/send_sms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sms/wizard/send_sms.py b/addons/sms/wizard/send_sms.py index 15d284e0879..b5075d007f0 100644 --- a/addons/sms/wizard/send_sms.py +++ b/addons/sms/wizard/send_sms.py @@ -83,7 +83,7 @@ class SendSMS(models.TransientModel): return result def action_send_sms(self): - numbers = self.recipients.split(',') + numbers = [number.strip() for number in self.recipients.split(',') if number.strip()] active_model = self.env.context.get('active_model') model = self.env[active_model] From b9e5b243ac3855caa66193849e7467199e770fef Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 6 Nov 2018 15:02:02 +0000 Subject: [PATCH 3/5] [IMP] sms: Don't overwrite default recipients on default_get If the recipients are passed by setting 'default_recipients' on the context, then don't overwrite the content with the method '_get_default_sms_recipients'. For example, as an employee is a mail.thread, then the method '_get_default_sms_recipients' exists on it. Calling this method will erase the content of the field 'recipients' that comes from the default_recipients key in the context. If we want to use this wizard on something else than a partner, we should avoid this kind of overwrite. Manual backport of fix done in 12.1 3c91ac425f74755fa0e79aa620b601d29a4be65b --- addons/sms/wizard/send_sms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sms/wizard/send_sms.py b/addons/sms/wizard/send_sms.py index b5075d007f0..5b3ee302144 100644 --- a/addons/sms/wizard/send_sms.py +++ b/addons/sms/wizard/send_sms.py @@ -66,7 +66,7 @@ class SendSMS(models.TransientModel): model = self.env[active_model] records = self._get_records(model) - if getattr(records, '_get_default_sms_recipients'): + if getattr(records, '_get_default_sms_recipients') and not self.env.context.get('default_recipients'): partners = records._get_default_sms_recipients() phone_numbers = [] no_phone_partners = [] From 7b02b88645aee70a6523011dbdbfa01eec5c350b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 21 May 2019 13:39:40 +0000 Subject: [PATCH 4/5] [FIX] sms: correctly support not mail.thread / void model in composer SMS composer would like to support sending message to not mail.thread models or support direct recipients as default / create. However issues in the code prevent to effectively support that. Related to task 1922163 Linked to PR #33567 --- addons/sms/wizard/send_sms.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/addons/sms/wizard/send_sms.py b/addons/sms/wizard/send_sms.py index 5b3ee302144..e58143209e0 100644 --- a/addons/sms/wizard/send_sms.py +++ b/addons/sms/wizard/send_sms.py @@ -61,12 +61,11 @@ class SendSMS(models.TransientModel): @api.model def default_get(self, fields): result = super(SendSMS, self).default_get(fields) - active_model = self.env.context.get('active_model') - model = self.env[active_model] - records = self._get_records(model) - if getattr(records, '_get_default_sms_recipients') and not self.env.context.get('default_recipients'): + if not self.env.context.get('default_recipients') and active_model and hasattr(self.env[active_model], '_get_default_sms_recipients'): + model = self.env[active_model] + records = self._get_records(model) partners = records._get_default_sms_recipients() phone_numbers = [] no_phone_partners = [] @@ -86,9 +85,9 @@ class SendSMS(models.TransientModel): numbers = [number.strip() for number in self.recipients.split(',') if number.strip()] active_model = self.env.context.get('active_model') - model = self.env[active_model] - records = self._get_records(model) - if getattr(records, 'message_post_send_sms'): + if active_model and hasattr(self.env[active_model], 'message_post_send_sms'): + model = self.env[active_model] + records = self._get_records(model) records.message_post_send_sms(self.message, numbers=numbers) else: self.env['sms.api']._send_sms(numbers, self.message) From 8386e6620c9fa1174df375b474c444ea4716c799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 21 May 2019 15:08:39 +0000 Subject: [PATCH 5/5] [FIX] sms: use E164 formatting to avoid having to deal with spaces Related to task 1922163 Linked to PR #33567 --- addons/sms/wizard/send_sms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sms/wizard/send_sms.py b/addons/sms/wizard/send_sms.py index e58143209e0..f25bedb72ab 100644 --- a/addons/sms/wizard/send_sms.py +++ b/addons/sms/wizard/send_sms.py @@ -44,8 +44,8 @@ class SendSMS(models.TransientModel): return number if not phonenumbers.is_possible_number(phone_nbr) or not phonenumbers.is_valid_number(phone_nbr): return number - phone_fmt = phonenumbers.PhoneNumberFormat.INTERNATIONAL - return phonenumbers.format_number(phone_nbr, phone_fmt).replace(' ', '') + phone_fmt = phonenumbers.PhoneNumberFormat.E164 + return phonenumbers.format_number(phone_nbr, phone_fmt) else: return number