diff options
Diffstat (limited to 'addons/sms/wizard/send_sms.py')
| -rw-r--r-- | addons/sms/wizard/send_sms.py | 62 |
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 |
