summaryrefslogtreecommitdiff
path: root/addons/sms/wizard
diff options
context:
space:
mode:
Diffstat (limited to 'addons/sms/wizard')
-rw-r--r--addons/sms/wizard/sms_composer.py74
1 files changed, 44 insertions, 30 deletions
diff --git a/addons/sms/wizard/sms_composer.py b/addons/sms/wizard/sms_composer.py
index 7d5cbc9bfd2..0d3d822ed4b 100644
--- a/addons/sms/wizard/sms_composer.py
+++ b/addons/sms/wizard/sms_composer.py
@@ -18,41 +18,24 @@ class SendSMS(models.TransientModel):
result = super(SendSMS, self).default_get(fields)
result['res_model'] = result.get('res_model') or self.env.context.get('active_model')
- result['composition_mode'] = result.get('composition_mode')
-
- # guess the composition mode, if multiples ids => mass composition else comment
- if self.env.context.get('default_composition_mode') and self.env.context.get('default_composition_mode') == "guess":
- if self.env.context.get('active_ids') and len(self.env.context.get('active_ids')) > 1:
- result['composition_mode'] = 'mass'
- result['res_id'] = False
- else:
- result['composition_mode'] = 'comment'
- result['res_ids'] = False
if not result.get('active_domain'):
result['active_domain'] = repr(self.env.context.get('active_domain', []))
+ if not result.get('res_ids'):
+ if not result.get('res_id') and self.env.context.get('active_ids') and len(self.env.context.get('active_ids')) > 1:
+ result['res_ids'] = repr(self.env.context.get('active_ids'))
if not result.get('res_id'):
if not result.get('res_ids') and self.env.context.get('active_id'):
result['res_id'] = self.env.context.get('active_id')
- if not result.get('res_ids'):
- if not result.get('res_id') and self.env.context.get('active_ids'):
- result['res_ids'] = repr(self.env.context.get('active_ids'))
- if result['res_model']:
- result.update(
- self._get_composer_values(
- result['composition_mode'], result['res_model'], result.get('res_id'),
- result.get('body'), result.get('template_id')
- )
- )
return result
# documents
composition_mode = fields.Selection([
('numbers', 'Send to numbers'),
('comment', 'Post on a document'),
- ('mass', 'Send SMS in batch')],
- string='Composition Mode', default='comment', required=True)
+ ('mass', 'Send SMS in batch')], string='Composition Mode',
+ compute='_compute_composition_mode', readonly=False, required=True, store=True)
res_model = fields.Char('Document Model Name')
res_id = fields.Integer('Document ID')
res_ids = fields.Char('Document IDs')
@@ -86,7 +69,19 @@ class SendSMS(models.TransientModel):
sanitized_numbers = fields.Char('Sanitized Number', compute='_compute_sanitized_numbers', compute_sudo=False)
# content
template_id = fields.Many2one('sms.template', string='Use Template', domain="[('model', '=', res_model)]")
- body = fields.Text('Message', required=True)
+ body = fields.Text(
+ 'Message', compute='_compute_body',
+ readonly=False, store=True, required=True)
+
+ @api.depends('res_ids_count', 'active_domain_count')
+ @api.depends_context('default_composition_mode')
+ def _compute_composition_mode(self):
+ for composer in self:
+ if self.env.context.get('default_composition_mode') == 'guess' or not composer.composition_mode:
+ if composer.res_ids_count > 1 or (composer.use_active_domain and composer.active_domain_count > 1):
+ composer.composition_mode = 'mass'
+ else:
+ composer.composition_mode = 'comment'
@api.depends('res_model', 'res_id', 'res_ids', 'active_domain')
def _compute_recipients_count(self):
@@ -165,12 +160,29 @@ class SendSMS(models.TransientModel):
else:
composer.sanitized_numbers = False
- @api.onchange('composition_mode', 'res_model', 'res_id', 'template_id')
- def _onchange_template_id(self):
- if self.template_id and self.composition_mode == 'comment' and self.res_id:
- self.body = self.template_id._render_field('body', [self.res_id], compute_lang=True)[self.res_id]
- elif self.template_id:
- self.body = self.template_id.body
+ @api.depends('composition_mode', 'res_model', 'res_id', 'template_id')
+ def _compute_body(self):
+ for record in self:
+ if record.template_id and record.composition_mode == 'comment' and record.res_id:
+ record.body = record.template_id._render_field('body', [record.res_id], compute_lang=True)[record.res_id]
+ elif record.template_id:
+ record.body = record.template_id.body
+
+ # ------------------------------------------------------------
+ # CRUD
+ # ------------------------------------------------------------
+
+ @api.model
+ def create(self, values):
+ # TDE FIXME: currently have to compute manually to avoid required issue, waiting VFE branch
+ if not values.get('body') or not values.get('composition_mode'):
+ values_wdef = self._add_missing_default_values(values)
+ cache_composer = self.new(values_wdef)
+ cache_composer._compute_body()
+ cache_composer._compute_composition_mode()
+ values['body'] = values.get('body') or cache_composer.body
+ values['composition_mode'] = values.get('composition_mode') or cache_composer.composition_mode
+ return super(SendSMS, self).create(values)
# ------------------------------------------------------------
# Actions
@@ -357,10 +369,12 @@ class SendSMS(models.TransientModel):
if self.use_active_domain:
active_domain = literal_eval(self.active_domain or '[]')
records = self.env[self.res_model].search(active_domain)
+ elif self.res_ids:
+ records = self.env[self.res_model].browse(literal_eval(self.res_ids))
elif self.res_id:
records = self.env[self.res_model].browse(self.res_id)
else:
- records = self.env[self.res_model].browse(literal_eval(self.res_ids or '[]'))
+ records = self.env[self.res_model]
records = records.with_context(mail_notify_author=True)
return records