5 changed files with 206 additions and 0 deletions
-
1email_template_template/__init__.py
-
52email_template_template/__openerp__.py
-
21email_template_template/model/__init__.py
-
61email_template_template/model/email_template.py
-
71email_template_template/view/email_template.xml
@ -0,0 +1 @@ |
|||||
|
import model |
@ -0,0 +1,52 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# OpenERP, Open Source Management Solution |
||||
|
# This module copyright (C) 2013 Therp BV (<http://therp.nl>). |
||||
|
# |
||||
|
# 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 <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
{ |
||||
|
"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: |
@ -0,0 +1,21 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# OpenERP, Open Source Management Solution |
||||
|
# This module copyright (C) 2013 Therp BV (<http://therp.nl>). |
||||
|
# |
||||
|
# 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 <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
import email_template |
@ -0,0 +1,61 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# OpenERP, Open Source Management Solution |
||||
|
# This module copyright (C) 2013 Therp BV (<http://therp.nl>). |
||||
|
# |
||||
|
# 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 <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
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 |
@ -0,0 +1,71 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<openerp> |
||||
|
<data> |
||||
|
<record id="email_template_form" model="ir.ui.view"> |
||||
|
<field name="name">email.template.form</field> |
||||
|
<field name="model">email.template</field> |
||||
|
<field name="inherit_id" ref="email_template.email_template_form" /> |
||||
|
<field name="type">form</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<data> |
||||
|
<field name="name" position="after"> |
||||
|
<field name="is_template_template" invisible="1" /> |
||||
|
<field name="email_template_id" domain="[('email_template_id', '=', False), ('model_id', '=', %(email_template.model_email_template)s)]" |
||||
|
attrs="{'readonly': [('is_template_template','=',True), ('email_template_id','=',False)]}" |
||||
|
context="{'default_model_id': %(email_template.model_email_template)s}" |
||||
|
/> |
||||
|
|
||||
|
</field> |
||||
|
<field name="model_id" position="attributes"> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': [('is_template_template','=',True)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="email_from" position="attributes"> |
||||
|
<attribute name="required">0</attribute> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="email_to" position="attributes"> |
||||
|
<attribute name="required">0</attribute> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="email_cc" position="attributes"> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="email_recipients" position="attributes"> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="reply_to" position="attributes"> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="lang" position="attributes"> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="user_signature" position="attributes"> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
<field name="subject" position="attributes"> |
||||
|
<attribute name="required">0</attribute> |
||||
|
<attribute name="attrs"> |
||||
|
{'readonly': ['|',('is_template_template','=',True),('model_id', '=', %(email_template.model_email_template)s)]} |
||||
|
</attribute> |
||||
|
</field> |
||||
|
</data> |
||||
|
</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</openerp> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue