diff options
| author | ryv-odoo <ryv@odoo.com> | 2019-09-05 14:58:23 +0000 |
|---|---|---|
| committer | ryv-odoo <ryv@odoo.com> | 2019-09-12 14:53:44 +0000 |
| commit | 076e71cb5b73ab23ca3abcc0764cc9e46a59b38f (patch) | |
| tree | 9b36cb857625bb58706c20165469c2b5177a0f2e /addons | |
| parent | 8ef1543908b482820186f60a976bc44808b0c600 (diff) | |
[IMP] sms: allow to preview a sms template
Add a way for the user to preview sms content from a sms
template depending of a record (targeted model) and the
installed languages (as for the mail template). Add button
to open this preview on the form of the sms template.
TASK_ID : 2053631
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/sms/__manifest__.py | 1 | ||||
| -rw-r--r-- | addons/sms/views/sms_template_views.xml | 5 | ||||
| -rw-r--r-- | addons/sms/wizard/__init__.py | 1 | ||||
| -rw-r--r-- | addons/sms/wizard/sms_template_preview.py | 53 | ||||
| -rw-r--r-- | addons/sms/wizard/sms_template_preview_views.xml | 42 |
5 files changed, 102 insertions, 0 deletions
diff --git a/addons/sms/__manifest__.py b/addons/sms/__manifest__.py index 2b15020a219..90462b4c8fb 100644 --- a/addons/sms/__manifest__.py +++ b/addons/sms/__manifest__.py @@ -16,6 +16,7 @@ The service is provided by the In App Purchase Odoo platform. 'data/ir_cron_data.xml', 'wizard/sms_cancel_views.xml', 'wizard/sms_composer_views.xml', + 'wizard/sms_template_preview_views.xml', 'wizard/sms_resend_views.xml', 'views/ir_actions_views.xml', 'views/res_config_settings_views.xml', diff --git a/addons/sms/views/sms_template_views.xml b/addons/sms/views/sms_template_views.xml index 1f339e4d944..24acfcac134 100644 --- a/addons/sms/views/sms_template_views.xml +++ b/addons/sms/views/sms_template_views.xml @@ -6,6 +6,11 @@ <field name="arch" type="xml"> <form string="SMS Templates"> <sheet> + <div class="oe_button_box" name="button_box"> + <button class="oe_stat_button" name="%(sms_template_preview_action)d" icon="fa-search-plus" string="Preview" + type="action" target="new" + context="{'template_id':active_id}"/> + </div> <div class="oe_title"> <label for="name" class="oe_edit_only" string="SMS Template"/> <h1><field name="name" required="1"/></h1> diff --git a/addons/sms/wizard/__init__.py b/addons/sms/wizard/__init__.py index e6669ba5997..bd0a5c11647 100644 --- a/addons/sms/wizard/__init__.py +++ b/addons/sms/wizard/__init__.py @@ -3,3 +3,4 @@ from . import sms_cancel from . import sms_composer from . import sms_resend +from . import sms_template_preview diff --git a/addons/sms/wizard/sms_template_preview.py b/addons/sms/wizard/sms_template_preview.py new file mode 100644 index 00000000000..65060f4848a --- /dev/null +++ b/addons/sms/wizard/sms_template_preview.py @@ -0,0 +1,53 @@ +# -*- 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): + _inherit = "sms.template" + _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 = 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) + return result + + sms_template_id = fields.Many2one('sms.template') + + 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') + + @api.depends('model_id', 'res_id') + def _compute_resource_ref(self): + for preview in self: + if preview.model_id: + preview.resource_ref = '%s,%s' % (preview.model_id.model, preview.res_id or 0) + + 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 + template = self.sms_template_id.with_context(lang=self.lang) + self.body = template._render_template(template.body, template.model, self.res_id) diff --git a/addons/sms/wizard/sms_template_preview_views.xml b/addons/sms/wizard/sms_template_preview_views.xml new file mode 100644 index 00000000000..ab9d3f90127 --- /dev/null +++ b/addons/sms/wizard/sms_template_preview_views.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + <!-- SMS Template Preview --> + <record model="ir.ui.view" id="sms_template_preview_form"> + <field name="name">sms.template.preview.form</field> + <field name="model">sms.template.preview</field> + <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> + <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> + </div> + </div> + <p>Choose a language: <field name="lang" class="oe_inline ml8"/></p> + <label for="body" string="SMS content"/> + <hr/> + <field name="body" readonly="1" nolabel="1" options='{"safe": True}'/> + <hr/> + <footer> + <button string="Discard" class="btn-secondary" special="cancel"/> + </footer> + </form> + </field> + </record> + + <record id="sms_template_preview_action" model="ir.actions.act_window"> + <field name="name">Template Preview</field> + <field name="res_model">sms.template.preview</field> + <field name="binding_model_id" ref="sms.model_sms_template"/> + <field name="type">ir.actions.act_window</field> + <field name="view_mode">form</field> + <field name="view_id" ref="sms_template_preview_form"/> + <field name="target">new</field> + <field name="context">{'default_sms_template_id':active_id}</field> + </record> + + </data> +</odoo> |
