summaryrefslogtreecommitdiff
path: root/addons/sms/wizard
diff options
context:
space:
mode:
authorDharmraj Jhala <dja@odoo.com>2020-01-28 12:00:48 +0000
committerThibault Delavallée <tde@odoo.com>2020-02-11 14:14:19 +0000
commit587a6bd9f6fc1902067b26faa4a731e5c855a38f (patch)
tree2f6c199efb9771082408bc38d6a51ba1f19db1aa /addons/sms/wizard
parentc8e79869a37b87101d64e4703401f409358a2099 (diff)
[IMP] sms: improve SMS preview without existing record behavior and code
This commit clean-ups the code for model `sms.template.preview` which mainly includes the following changes : * remove 'res_id' field and use only the reference field instead; * remove inheritance from `sms.template` as we only need a body field computed based on record and template; * convert onchange of lang / record to compute field for body; * fix 'No Records' warning which previously appeared even if there were records to be previewed (by adding compute field 'no_records'); LINKS TaskID 2180132 Community PR odoo/odoo#44104 Upgrade PR odoo/upgrade#763 Related: odoo/upgrade#763 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons/sms/wizard')
-rw-r--r--addons/sms/wizard/sms_template_preview.py46
-rw-r--r--addons/sms/wizard/sms_template_preview_views.xml5
2 files changed, 23 insertions, 28 deletions
diff --git a/addons/sms/wizard/sms_template_preview.py b/addons/sms/wizard/sms_template_preview.py
index ff63e73e308..9d00185ee2e 100644
--- a/addons/sms/wizard/sms_template_preview.py
+++ b/addons/sms/wizard/sms_template_preview.py
@@ -5,7 +5,6 @@ from odoo import api, fields, models
class SMSTemplatePreview(models.TransientModel):
- _inherit = "sms.template"
_name = "sms.template.preview"
_description = "SMS Template Preview"
@@ -21,36 +20,31 @@ class SMSTemplatePreview(models.TransientModel):
@api.model
def default_get(self, fields):
result = super(SMSTemplatePreview, self).default_get(fields)
- sms_template = self._context.get('default_sms_template_id') and self.env['sms.template'].browse(self._context['default_sms_template_id']) or False
- if sms_template and not result.get('res_id'):
- result['res_id'] = self.env[sms_template.model].search([], limit=1)
+ sms_template_id = self.env.context.get('default_sms_template_id')
+ if not sms_template_id or 'resource_ref' not in fields:
+ return result
+ sms_template = self.env['sms.template'].browse(sms_template_id)
+ res = self.env[sms_template.model_id.model].search([], limit=1)
+ if res:
+ result['resource_ref'] = '%s,%s' % (sms_template.model_id.model, res.id)
return result
sms_template_id = fields.Many2one('sms.template') # NOTE This should probably be required
lang = fields.Selection(_selection_languages, string='Template Preview Language')
model_id = fields.Many2one('ir.model', related="sms_template_id.model_id")
- res_id = fields.Integer(string='Record ID')
- resource_ref = fields.Reference(string='Record reference', selection='_selection_target_model', compute='_compute_resource_ref', inverse='_inverse_resource_ref')
+ body = fields.Char('Body', compute='_compute_sms_template_fields')
+ resource_ref = fields.Reference(string='Record reference', selection='_selection_target_model')
+ no_record = fields.Boolean('No Record', compute='_compute_no_record')
- @api.depends('model_id', 'res_id')
- def _compute_resource_ref(self):
+ @api.depends('model_id')
+ def _compute_no_record(self):
for preview in self:
- if preview.model_id:
- preview.resource_ref = '%s,%s' % (preview.model_id.model, preview.res_id or 0)
- else:
- preview.resource_ref = False
-
- def _inverse_resource_ref(self):
- for preview in self:
- if preview.resource_ref:
- preview.res_id = preview.resource_ref.id
-
- @api.onchange('lang', 'resource_ref')
- def on_change_resource_ref(self):
- # Update res_id and body depending of the resource_ref
- if self.resource_ref:
- self.res_id = self.resource_ref.id
- if self.sms_template_id:
- template = self.sms_template_id.with_context(lang=self.lang)
- self.body = template._render_template(template.body, template.model, self.res_id or 0)
+ preview.no_record = (self.env[preview.model_id.model].search_count([]) == 0) if preview.model_id else True
+
+ @api.depends('lang', 'resource_ref')
+ def _compute_sms_template_fields(self):
+ for wizard in self:
+ # Update body depending of the resource_ref
+ sms_template = wizard.sms_template_id.with_context(lang=wizard.lang)
+ wizard.body = sms_template._render_template(sms_template.body, sms_template.model, wizard.resource_ref.id) if wizard.resource_ref else sms_template.body
diff --git a/addons/sms/wizard/sms_template_preview_views.xml b/addons/sms/wizard/sms_template_preview_views.xml
index df7a583b596..c2a3f396283 100644
--- a/addons/sms/wizard/sms_template_preview_views.xml
+++ b/addons/sms/wizard/sms_template_preview_views.xml
@@ -8,11 +8,12 @@
<field name="arch" type="xml">
<form string="SMS Preview">
<h3>Preview of <field name="sms_template_id" readonly="1" nolabel="1" class="oe_inline"/></h3>
+ <field name="no_record" invisible="1"/>
<div class="o_row">
<span>Choose an example <field name="model_id" readonly="1"/> record:</span>
<div>
- <field name="resource_ref" class="oe_inline" options="{'hide_model': True, 'no_create': True, 'no_edit': True, 'no_open': True}"/>
- <span class="text-warning" attrs="{'invisible':[('resource_ref','!=', False)]}">No records</span>
+ <field name="resource_ref" class="oe_inline" options="{'hide_model': True, 'no_create': True, 'no_edit': True, 'no_open': True}" attrs="{'invisible': [('no_record', '=', True)]}"/>
+ <span class="text-warning" attrs="{'invisible': [('no_record', '=', False)]}">No records</span>
</div>
</div>
<p>Choose a language: <field name="lang" class="oe_inline ml8"/></p>