[IMP] remove template_languange in email_template module.
bzr revid: ysa@tinyerp.com-20110203101428-pwxk02no9tbxfzkz
This commit is contained in:
parent
f267ac9b46
commit
5e912c68d6
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue