diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/sms/wizard/sms_template_preview.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/sms/wizard/sms_template_preview.py')
| -rw-r--r-- | addons/sms/wizard/sms_template_preview.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/addons/sms/wizard/sms_template_preview.py b/addons/sms/wizard/sms_template_preview.py new file mode 100644 index 00000000..ffe22a42 --- /dev/null +++ b/addons/sms/wizard/sms_template_preview.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class SMSTemplatePreview(models.TransientModel): + _name = "sms.template.preview" + _description = "SMS Template Preview" + + @api.model + def _selection_target_model(self): + models = self.env['ir.model'].search([]) + return [(model.model, model.name) for model in models] + + @api.model + def _selection_languages(self): + return self.env['res.lang'].get_installed() + + @api.model + def default_get(self, fields): + result = super(SMSTemplatePreview, self).default_get(fields) + 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', required=True, ondelete='cascade') + lang = fields.Selection(_selection_languages, string='Template Preview Language') + model_id = fields.Many2one('ir.model', related="sms_template_id.model_id") + 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') + def _compute_no_record(self): + for preview in self: + 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: + if wizard.sms_template_id and wizard.resource_ref: + wizard.body = wizard.sms_template_id._render_field('body', [wizard.resource_ref.id], set_lang=wizard.lang)[wizard.resource_ref.id] + else: + wizard.body = wizard.sms_template_id.body |
