[IMP] remove template_languange in email_template module.

bzr revid: ysa@tinyerp.com-20110203101428-pwxk02no9tbxfzkz
This commit is contained in:
YSA (Openerp) 2011-02-03 15:44:28 +05:30
parent f267ac9b46
commit 5e912c68d6
3 changed files with 30 additions and 71 deletions

View File

@ -23,3 +23,10 @@
import email_template import email_template
import wizard import wizard
try:
from mako.template import Template as MakoTemplate
except ImportError:
logging.getLogger('init').warning("module email_template: Mako templates not installed")
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -31,12 +31,6 @@ TEMPLATE_ENGINES = []
from osv import osv, fields from osv import osv, fields
from tools.translate import _ from tools.translate import _
try:
from mako.template import Template as MakoTemplate
TEMPLATE_ENGINES.append(('mako', 'Mako Templates'))
except ImportError:
logging.getLogger('init').warning("module email_template: Mako templates not installed")
import tools import tools
import pooler import pooler
import logging import logging
@ -63,13 +57,9 @@ def get_value(cursor, user, recid, message=None, template=None, context=None):
env = { env = {
'user':pool.get('res.users').browse(cursor, user, user, context=context), 'user':pool.get('res.users').browse(cursor, user, user, context=context),
'db':cursor.dbname 'db':cursor.dbname
} }
if template.template_language == 'mako': templ = MakoTemplate(message, input_encoding='utf-8')
templ = MakoTemplate(message, input_encoding='utf-8') reply = MakoTemplate(message).render_unicode(object=object, peobject=object, env=env, format_exceptions=True)
reply = MakoTemplate(message).render_unicode(object=object,
peobject=object,
env=env,
format_exceptions=True)
return reply or False return reply or False
except Exception: except Exception:
logging.exception("can't render %r", message) logging.exception("can't render %r", message)
@ -227,19 +217,9 @@ This is useful for CRM leads for example"),
help="Copy this html code to your HTML message" help="Copy this html code to your HTML message"
" body for displaying the info in your mail.", " body for displaying the info in your mail.",
store=False), store=False),
#Template language(engine eg.Mako) specifics
'template_language':fields.selection(
TEMPLATE_ENGINES,
'Templating Language',
required=True
),
'auto_delete': fields.boolean('Auto Delete', help="Permanently delete emails after sending"), 'auto_delete': fields.boolean('Auto Delete', help="Permanently delete emails after sending"),
} }
_defaults = {
'template_language' : lambda *a:'mako',
}
_sql_constraints = [ _sql_constraints = [
('name', 'unique (name)','The template name must be unique !') ('name', 'unique (name)','The template name must be unique !')
] ]
@ -305,27 +285,25 @@ This is useful for CRM leads for example"),
default.update({'name':new_name}) default.update({'name':new_name})
return super(email_template, self).copy(cr, uid, id, default, context) return super(email_template, self).copy(cr, uid, id, default, context)
def build_expression(self, field_name, sub_field_name, null_value, template_language='mako'): def build_expression(self, field_name, sub_field_name, null_value):
""" """
Returns a template expression based on data provided Returns a template expression based on data provided
@param field_name: field name @param field_name: field name
@param sub_field_name: sub field name (M2O) @param sub_field_name: sub field name (M2O)
@param null_value: default value if the target value is empty @param null_value: default value if the target value is empty
@param template_language: name of template engine
@return: computed expression @return: computed expression
""" """
expression = '' expression = ''
if template_language == 'mako': if field_name:
if field_name: expression = "${object." + field_name
expression = "${object." + field_name if sub_field_name:
if sub_field_name: expression += "." + sub_field_name
expression += "." + sub_field_name if null_value:
if null_value: expression += " or '''%s'''" % null_value
expression += " or '''%s'''" % null_value expression += "}"
expression += "}"
return expression return expression
def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None): def onchange_model_object_field(self, cr, uid, ids, model_object_field, context=None):
if not model_object_field: if not model_object_field:
return {} return {}
result = {} result = {}
@ -335,25 +313,18 @@ This is useful for CRM leads for example"),
res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context)
if res_ids: if res_ids:
result['sub_object'] = res_ids[0] result['sub_object'] = res_ids[0]
result['copyvalue'] = self.build_expression(False, result['copyvalue'] = self.build_expression(False, False, False)
False,
False,
template_language)
result['sub_model_object_field'] = False result['sub_model_object_field'] = False
result['null_value'] = False result['null_value'] = False
else: else:
#Its a simple field... just compute placeholder #Its a simple field... just compute placeholder
result['sub_object'] = False result['sub_object'] = False
result['copyvalue'] = self.build_expression(field_obj.name, result['copyvalue'] = self.build_expression(field_obj.name, False, False)
False,
False,
template_language
)
result['sub_model_object_field'] = False result['sub_model_object_field'] = False
result['null_value'] = False result['null_value'] = False
return {'value':result} return {'value':result}
def onchange_sub_model_object_field(self, cr, uid, ids, model_object_field, sub_model_object_field, template_language, context=None): def onchange_sub_model_object_field(self, cr, uid, ids, model_object_field, sub_model_object_field, context=None):
if not model_object_field or not sub_model_object_field: if not model_object_field or not sub_model_object_field:
return {} return {}
result = {} result = {}
@ -363,26 +334,18 @@ This is useful for CRM leads for example"),
sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context)
if res_ids: if res_ids:
result['sub_object'] = res_ids[0] result['sub_object'] = res_ids[0]
result['copyvalue'] = self.build_expression(field_obj.name, result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, False)
sub_field_obj.name,
False,
template_language
)
result['sub_model_object_field'] = sub_model_object_field result['sub_model_object_field'] = sub_model_object_field
result['null_value'] = False result['null_value'] = False
else: else:
#Its a simple field... just compute placeholder #Its a simple field... just compute placeholder
result['sub_object'] = False result['sub_object'] = False
result['copyvalue'] = self.build_expression(field_obj.name, result['copyvalue'] = self.build_expression(field_obj.name, False, False)
False,
False,
template_language
)
result['sub_model_object_field'] = False result['sub_model_object_field'] = False
result['null_value'] = False result['null_value'] = False
return {'value':result} return {'value':result}
def onchange_null_value(self, cr, uid, ids, model_object_field, sub_model_object_field, null_value, template_language, context=None): def onchange_null_value(self, cr, uid, ids, model_object_field, sub_model_object_field, null_value, context=None):
if not model_object_field and not null_value: if not model_object_field and not null_value:
return {} return {}
result = {} result = {}
@ -392,21 +355,13 @@ This is useful for CRM leads for example"),
sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context) sub_field_obj = self.pool.get('ir.model.fields').browse(cr, uid, sub_model_object_field, context)
if res_ids: if res_ids:
result['sub_object'] = res_ids[0] result['sub_object'] = res_ids[0]
result['copyvalue'] = self.build_expression(field_obj.name, result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, null_value)
sub_field_obj.name,
null_value,
template_language
)
result['sub_model_object_field'] = sub_model_object_field result['sub_model_object_field'] = sub_model_object_field
result['null_value'] = null_value result['null_value'] = null_value
else: else:
#Its a simple field... just compute placeholder #Its a simple field... just compute placeholder
result['sub_object'] = False result['sub_object'] = False
result['copyvalue'] = self.build_expression(field_obj.name, result['copyvalue'] = self.build_expression(field_obj.name, False, null_value)
False,
null_value,
template_language
)
result['sub_model_object_field'] = False result['sub_model_object_field'] = False
result['null_value'] = null_value result['null_value'] = null_value
return {'value':result} return {'value':result}

View File

@ -43,24 +43,21 @@
</notebook> </notebook>
</group> </group>
<group col="4" colspan="2"> <group col="4" colspan="2">
<separator colspan="4" string="Expression Builder" />
<field name="template_language"
on_change="onchange_null_value(model_object_field,sub_model_object_field,null_value,template_language,context)" />
<notebook> <notebook>
<page string="Insert Simple Field"> <page string="Insert Simple Field">
<field name="model_object_field" <field name="model_object_field"
domain="[('model_id','=',object_name),('ttype','!=','one2many'),('ttype','!=','many2many')]" domain="[('model_id','=',object_name),('ttype','!=','one2many'),('ttype','!=','many2many')]"
on_change="onchange_model_object_field(model_object_field, template_language,context)" on_change="onchange_model_object_field(model_object_field,context)"
colspan="4" /> colspan="4" />
<field name="sub_object" readonly="1" colspan="4" /> <field name="sub_object" readonly="1" colspan="4" />
<field name="sub_model_object_field" <field name="sub_model_object_field"
domain="[('model_id','=',sub_object),('ttype','!=','one2many'),('ttype','!=','many2many')]" domain="[('model_id','=',sub_object),('ttype','!=','one2many'),('ttype','!=','many2many')]"
colspan="4" colspan="4"
attrs="{'readonly':[('sub_object','=',False)],'required':[('sub_object','!=',False)]}" attrs="{'readonly':[('sub_object','=',False)],'required':[('sub_object','!=',False)]}"
on_change="onchange_sub_model_object_field(model_object_field,sub_model_object_field,template_language,context)" /> on_change="onchange_sub_model_object_field(model_object_field,sub_model_object_field,context)" />
<field name="null_value" colspan="4" <field name="null_value" colspan="4"
on_change="onchange_null_value(model_object_field,sub_model_object_field,null_value,template_language,context)" /> on_change="onchange_null_value(model_object_field,sub_model_object_field,null_value,context)" />
<field name="copyvalue" colspan="4" /> <field name="copyvalue" colspan="4" />
</page> </page>
</notebook> </notebook>