From ce4fa016546b39920356989b96d5fa32aa290e7d Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Fri, 31 May 2013 09:53:13 +0200 Subject: [PATCH] [ADD] email_template_template --- email_template_template/__init__.py | 1 + email_template_template/__openerp__.py | 52 ++++++++++++++ email_template_template/model/__init__.py | 21 ++++++ .../model/email_template.py | 61 ++++++++++++++++ .../view/email_template.xml | 71 +++++++++++++++++++ 5 files changed, 206 insertions(+) create mode 100644 email_template_template/__init__.py create mode 100644 email_template_template/__openerp__.py create mode 100644 email_template_template/model/__init__.py create mode 100644 email_template_template/model/email_template.py create mode 100644 email_template_template/view/email_template.xml diff --git a/email_template_template/__init__.py b/email_template_template/__init__.py new file mode 100644 index 000000000..16e8b082f --- /dev/null +++ b/email_template_template/__init__.py @@ -0,0 +1 @@ +import model diff --git a/email_template_template/__openerp__.py b/email_template_template/__openerp__.py new file mode 100644 index 000000000..ed8de2be1 --- /dev/null +++ b/email_template_template/__openerp__.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name": "Templates for email templates", + "version": "1.0", + "author": "Therp BV", + "category": 'Tools', + 'complexity': "expert", + "description": """If an organisation's email layout is a bit more +complicated, changes can be tedious when having to do that across several email +templates. So this addon allows to define templates for mails that is referenced +by other mail templates. +This way we can put the layout parts into the template template and only content +in the other templates. Changing the layout is then only a matter of changing +the template template. + + +Usage: +Create an email template with the related document model 'Email Templates'. Now +most of the fields gray out and you can only edit body_text and body_html. Be +sure to use ${body_text} and ${body_html} respectively in your template +template. + +Then select this newly created template templates in one of your actual +templates.""", + 'website': 'http://therp.nl', + 'images': [], + 'depends': ['email_template'], + 'data': [ + 'view/email_template.xml', + ], + "license": 'AGPL-3', +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/email_template_template/model/__init__.py b/email_template_template/model/__init__.py new file mode 100644 index 000000000..90f325845 --- /dev/null +++ b/email_template_template/model/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +import email_template diff --git a/email_template_template/model/email_template.py b/email_template_template/model/email_template.py new file mode 100644 index 000000000..2d1b2091c --- /dev/null +++ b/email_template_template/model/email_template.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2013 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp.osv.orm import Model +from openerp.osv import fields +from openerp.addons.email_template.email_template import mako_template_env + + +class email_template(Model): + _inherit = 'email.template' + + def _get_is_template_template(self, cr, uid, ids, fields_name, arg, + context=None): + cr.execute('''select + id, (select count(*) > 0 from email_template e + where email_template_id=email_template.id) + from email_template + where id in %s''', (tuple(ids),)) + return dict(cr.fetchall()) + + _columns = { + 'email_template_id': fields.many2one('email.template', 'Template'), + 'is_template_template': fields.function( + _get_is_template_template, type='boolean', + string='Is a template template'), + } + + def get_email_template(self, cr, uid, template_id=False, record_id=None, + context=None): + this = super(email_template, self).get_email_template( + cr, uid, template_id, record_id, context) + + if this.email_template_id and not this.is_template_template: + for field in ['body_html']: + if this[field] and this.email_template_id[field]: + try: + mako_template_env.autoescape = False + this._data[this.id][field] = self.render_template( + cr, uid, this.email_template_id[field], + this.email_template_id.model, + this.id, this._context) + finally: + mako_template_env.autoescape = True + return this diff --git a/email_template_template/view/email_template.xml b/email_template_template/view/email_template.xml new file mode 100644 index 000000000..e38cd3c76 --- /dev/null +++ b/email_template_template/view/email_template.xml @@ -0,0 +1,71 @@ + + + + + email.template.form + email.template + + form + + + + + + + + + + {'readonly': [('is_template_template','=',True)]} + + + + 0 + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + 0 + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + 0 + + {'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} + + + + + + +