summaryrefslogtreecommitdiff
path: root/addons/sms/wizard/sms_template_preview.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sms/wizard/sms_template_preview.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sms/wizard/sms_template_preview.py')
-rw-r--r--addons/sms/wizard/sms_template_preview.py50
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