summaryrefslogtreecommitdiff
path: root/addons/mass_mailing_sms/wizard/mailing_sms_test.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/mass_mailing_sms/wizard/mailing_sms_test.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/mass_mailing_sms/wizard/mailing_sms_test.py')
-rw-r--r--addons/mass_mailing_sms/wizard/mailing_sms_test.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/addons/mass_mailing_sms/wizard/mailing_sms_test.py b/addons/mass_mailing_sms/wizard/mailing_sms_test.py
new file mode 100644
index 00000000..1ea9f871
--- /dev/null
+++ b/addons/mass_mailing_sms/wizard/mailing_sms_test.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, exceptions, fields, models, _
+from odoo.addons.phone_validation.tools import phone_validation
+
+
+class MassSMSTest(models.TransientModel):
+ _name = 'mailing.sms.test'
+ _description = 'Test SMS Mailing'
+
+ def _default_numbers(self):
+ return self.env.user.partner_id.phone_sanitized or ""
+
+ numbers = fields.Char(string='Number(s)', required=True,
+ default=_default_numbers, help='Comma-separated list of phone numbers')
+ mailing_id = fields.Many2one('mailing.mailing', string='Mailing', required=True, ondelete='cascade')
+
+ def action_send_sms(self):
+ self.ensure_one()
+ numbers = [number.strip() for number in self.numbers.split(',')]
+ sanitize_res = phone_validation.phone_sanitize_numbers_w_record(numbers, self.env.user)
+ sanitized_numbers = [info['sanitized'] for info in sanitize_res.values() if info['sanitized']]
+ invalid_numbers = [number for number, info in sanitize_res.items() if info['code']]
+ if invalid_numbers:
+ raise exceptions.UserError(_('Following numbers are not correctly encoded: %s, example : "+32 495 85 85 77, +33 545 55 55 55"', repr(invalid_numbers)))
+
+ record = self.env[self.mailing_id.mailing_model_real].search([], limit=1)
+ body = self.mailing_id.body_plaintext
+ if record:
+ # Returns a proper error if there is a syntax error with jinja
+ body = self.env['mail.render.mixin']._render_template(body, self.mailing_id.mailing_model_real, record.ids)[record.id]
+
+ self.env['sms.api']._send_sms_batch([{
+ 'res_id': 0,
+ 'number': number,
+ 'content': body,
+ } for number in sanitized_numbers])
+ return True