diff options
| author | RomainLibert <rli@odoo.com> | 2019-10-11 07:39:29 +0000 |
|---|---|---|
| committer | fw-bot <otis@odoo.com> | 2019-10-11 21:48:11 +0000 |
| commit | e5f41040a108ea227cd592bf2a5d07b346cf032e (patch) | |
| tree | bfb5259167bdd9531df64717d199803a1baf8d68 | |
| parent | 25004a958d699a1d85295e7b0213d29bd41ce3ee (diff) | |
[FIX] sms: avoid crashing when no res_model of res_ids
sms_composer could crash in case you didn't pass it the active_id,
active_ids context keys or don't call the default_get
In that case it would try to access `self.env[False]` which would crash
in the `_compute_recipients_count`
We also have to ensure that we have a default value for `self.res_ids`
because `literal_eval(False)` will crash
closes odoo/odoo#38545
X-original-commit: 7ed0bd258d8a744716101d89cfa0bdf0f7990fb5
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
| -rw-r--r-- | addons/sms/wizard/sms_composer.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/addons/sms/wizard/sms_composer.py b/addons/sms/wizard/sms_composer.py index 8c2db1eb7f0..413d6410f46 100644 --- a/addons/sms/wizard/sms_composer.py +++ b/addons/sms/wizard/sms_composer.py @@ -35,10 +35,10 @@ class SendSMS(models.TransientModel): if not result.get('active_domain'): result['active_domain'] = repr(self.env.context.get('active_domain', [])) if not result.get('res_id'): - if not result.get('res_ids'): + 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'): + 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']: @@ -86,7 +86,10 @@ class SendSMS(models.TransientModel): @api.depends('res_model', 'res_ids', 'active_domain') def _compute_recipients_count(self): self.res_ids_count = len(literal_eval(self.res_ids)) if self.res_ids else 0 - self.active_domain_count = self.env[self.res_model].search_count(safe_eval(self.active_domain or '[]')) + if self.res_model: + self.active_domain_count = self.env[self.res_model].search_count(safe_eval(self.active_domain or '[]')) + else: + self.active_domain_count = 0 @api.depends('partner_ids', 'res_model', 'res_id', 'res_ids', 'use_active_domain', 'composition_mode', 'number_field_name', 'sanitized_numbers') def _compute_recipients(self): @@ -310,5 +313,5 @@ class SendSMS(models.TransientModel): 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)) + records = self.env[self.res_model].browse(literal_eval(self.res_ids or '[]')) return records |
