From 6ca272aa054aa05961636f2882b8abcbfd55ab54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 19 Jul 2022 14:38:50 +0000 Subject: [PATCH] [FW][FIX] sms: correctly render body in mass sms When sending SMS on several records in comment mode (aka: post sms message in batch) the body is sent as it is. This does not happen frequently as default usage is either * comment on a single record -> body is rendered by onchange / compute; * mass SMS on several records -> body is rendered for all records then sent to all recipients; Using comment mode in mass is not common, and is mainly achieved through handcrafted actions. However this can be fixed by correctly rendering the body before posting on all records. Use addition of records instead of OR to keep ordering of created messages when using SMS composer. Spotted during Task-2613245 (Server actions mail update / cleaning) closes odoo/odoo#97787 closes odoo/odoo#97890 closes odoo/odoo#97931 X-original-commit: odoo/odoo@1778a2c1b2b91e3806dff0e3a73f8963b2037d80 Signed-off-by: Thibault Delavallee (tde) --- addons/sms/wizard/sms_composer.py | 7 +++++-- addons/test_mail_sms/tests/test_sms_composer.py | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/sms/wizard/sms_composer.py b/addons/sms/wizard/sms_composer.py index ce7d2c1b42c..43d9e972e39 100644 --- a/addons/sms/wizard/sms_composer.py +++ b/addons/sms/wizard/sms_composer.py @@ -219,9 +219,12 @@ class SendSMS(models.TransientModel): subtype_id = self.env['ir.model.data']._xmlid_to_res_id('mail.mt_note') messages = self.env['mail.message'] + all_bodies = self._prepare_body_values(records) + for record in records: - messages |= record._message_sms( - self.body, subtype_id=subtype_id, + messages += record._message_sms( + all_bodies[record.id], + subtype_id=subtype_id, number_field=self.number_field_name, sms_numbers=self.sanitized_numbers.split(',') if self.sanitized_numbers else None) return messages diff --git a/addons/test_mail_sms/tests/test_sms_composer.py b/addons/test_mail_sms/tests/test_sms_composer.py index 220b84bf4f0..3c54a009c32 100644 --- a/addons/test_mail_sms/tests/test_sms_composer.py +++ b/addons/test_mail_sms/tests/test_sms_composer.py @@ -228,11 +228,11 @@ class TestSMSComposerBatch(TestSMSCommon): with self.mockSMSGateway(): messages = composer._action_send_sms() - for record in self.records: + for record, message in zip(self.records, messages): self.assertSMSNotification( [{'partner': record.customer_id}], - 'Hello ${object.name} zizisse an SMS.', - messages + 'Hello %s zizisse an SMS.' % record.name, + message ) def test_composer_batch_res_ids(self): @@ -248,11 +248,11 @@ class TestSMSComposerBatch(TestSMSCommon): with self.mockSMSGateway(): messages = composer._action_send_sms() - for record in self.records: + for record, message in zip(self.records, messages): self.assertSMSNotification( [{'partner': record.customer_id}], - 'Hello ${object.name} zizisse an SMS.', - messages + 'Hello %s zizisse an SMS.' % record.name, + message )