Skip to content

Commit 9f202e0

Browse files
[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#97768 X-original-commit: odoo/odoo@1778a2c Signed-off-by: Thibault Delavallee (tde) <[email protected]>
1 parent f5f0b6a commit 9f202e0

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

addons/sms/wizard/sms_composer.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,12 @@ def _action_send_sms_comment(self, records=None):
239239
subtype_id = self.env['ir.model.data'].xmlid_to_res_id('mail.mt_note')
240240

241241
messages = self.env['mail.message']
242+
all_bodies = self._prepare_body_values(records)
243+
242244
for record in records:
243-
messages |= record._message_sms(
244-
self.body, subtype_id=subtype_id,
245+
messages += record._message_sms(
246+
all_bodies[record.id],
247+
subtype_id=subtype_id,
245248
number_field=self.number_field_name,
246249
sms_numbers=self.sanitized_numbers.split(',') if self.sanitized_numbers else None)
247250
return messages

addons/test_mail_full/tests/test_sms_composer.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,11 @@ def test_composer_batch_active_domain(self):
230230
with self.mockSMSGateway():
231231
messages = composer._action_send_sms()
232232

233-
for record in self.records:
233+
for record, message in zip(self.records, messages):
234234
self.assertSMSNotification(
235235
[{'partner': record.customer_id}],
236-
'Hello ${object.name} zizisse an SMS.',
237-
messages
236+
'Hello %s zizisse an SMS.' % record.name,
237+
message
238238
)
239239

240240
def test_composer_batch_active_ids(self):
@@ -250,11 +250,11 @@ def test_composer_batch_active_ids(self):
250250
with self.mockSMSGateway():
251251
messages = composer._action_send_sms()
252252

253-
for record in self.records:
253+
for record, message in zip(self.records, messages):
254254
self.assertSMSNotification(
255255
[{'partner': record.customer_id}],
256-
'Hello ${object.name} zizisse an SMS.',
257-
messages
256+
'Hello %s zizisse an SMS.' % record.name,
257+
message
258258
)
259259

260260
def test_composer_batch_domain(self):
@@ -271,11 +271,11 @@ def test_composer_batch_domain(self):
271271
with self.mockSMSGateway():
272272
messages = composer._action_send_sms()
273273

274-
for record in self.records:
274+
for record, message in zip(self.records, messages):
275275
self.assertSMSNotification(
276276
[{'partner': record.customer_id}],
277-
'Hello ${object.name} zizisse an SMS.',
278-
messages
277+
'Hello %s zizisse an SMS.' % record.name,
278+
message
279279
)
280280

281281
def test_composer_batch_res_ids(self):
@@ -291,11 +291,11 @@ def test_composer_batch_res_ids(self):
291291
with self.mockSMSGateway():
292292
messages = composer._action_send_sms()
293293

294-
for record in self.records:
294+
for record, message in zip(self.records, messages):
295295
self.assertSMSNotification(
296296
[{'partner': record.customer_id}],
297-
'Hello ${object.name} zizisse an SMS.',
298-
messages
297+
'Hello %s zizisse an SMS.' % record.name,
298+
message
299299
)
300300

301301

0 commit comments

Comments
 (0)