summaryrefslogtreecommitdiff
path: root/addons/sms/wizard/send_sms.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/sms/wizard/send_sms.py')
-rw-r--r--addons/sms/wizard/send_sms.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/addons/sms/wizard/send_sms.py b/addons/sms/wizard/send_sms.py
new file mode 100644
index 00000000000..25fa0828934
--- /dev/null
+++ b/addons/sms/wizard/send_sms.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+import logging
+
+
+from odoo import api, fields, models
+from odoo.exceptions import UserError
+from odoo.addons.iap.models import iap
+
+_logger = logging.getLogger(__name__)
+
+
+class SendSMS(models.TransientModel):
+ _name = 'sms.send_sms'
+
+ recipients = fields.Char('Recipients', required=True)
+ message = fields.Text('Message', required=True)
+
+ def _get_records(self, model):
+ if self.env.context.get('active_domain'):
+ records = model.search(self.env.context.get('active_domain'))
+ elif self.env.context.get('active_ids'):
+ records = model.browse(self.env.context.get('active_ids', []))
+ else:
+ records = model.browse(self.env.context.get('active_id', []))
+ return records
+
+ @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'):
+ partners = records._get_default_sms_recipients()
+ phone_numbers = []
+ no_phone_partners = []
+ for partner in records:
+ number = partner.mobile
+ if number:
+ phone_numbers.append(number)
+ else:
+ no_phone_partners.append(partner.name)
+ if len(partners) > 1:
+ if no_phone_partners:
+ raise UserError(_('Missing mobile number for %s.') % ', '.join(no_phone_partners))
+ result['recipients'] = ', '.join(phone_numbers)
+ return result
+
+ def action_send_sms(self):
+ numbers = self.recipients.split(',')
+
+ 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'):
+ records.message_post_send_sms(self.message, numbers=numbers)
+ else:
+ self.env['sms.api']._send_sms(numbers, self.message)
+ return True