From 7111a3fe13b7dce43cab863a833a5108b8af77cf Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:06:43 +0200 Subject: [PATCH 1/4] [FIX] default expression value may now contains single quotes (but not 3 consecutive ones) bzr revid: jth@openerp.com-20100927140643-a2qm2mlsc0f42z94 --- addons/email_template/email_template.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index f87c4bf750e..cbedc57d6e2 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -351,7 +351,7 @@ This is useful for CRM leads for example"), if sub_model_object_field: copy_val += "." + sub_model_object_field if null_value: - copy_val += " or '" + null_value + "'" + copy_val += " or '''%s'''" % null_value if model_object_field: copy_val += "}" elif template_language == 'django': @@ -360,7 +360,7 @@ This is useful for CRM leads for example"), if sub_model_object_field: copy_val += "." + sub_model_object_field if null_value: - copy_val = copy_val + '|default:"' + null_value + '"' + copy_val = copy_val + "|default:'''%s'''" % null_value copy_val = copy_val + "}}" return copy_val From 7bf6844f10fc9278901f8e2a61e83df166f8241c Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:11:16 +0200 Subject: [PATCH 2/4] [FIX] Fixed wrong indentation. bzr revid: jth@openerp.com-20100927141116-wu6vznh4dqzu9i5j --- addons/email_template/email_template.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index cbedc57d6e2..d6b73a0ece1 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -348,20 +348,19 @@ This is useful for CRM leads for example"), if template_language == 'mako': if model_object_field: copy_val = "${object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field - if null_value: - copy_val += " or '''%s'''" % null_value - if model_object_field: + if sub_model_object_field: + copy_val += "." + sub_model_object_field + if null_value: + copy_val += " or '''%s'''" % null_value copy_val += "}" elif template_language == 'django': if model_object_field: copy_val = "{{object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field - if null_value: - copy_val = copy_val + "|default:'''%s'''" % null_value - copy_val = copy_val + "}}" + if sub_model_object_field: + copy_val += "." + sub_model_object_field + if null_value: + copy_val = copy_val + "|default:'''%s'''" % null_value + copy_val = copy_val + "}}" return copy_val def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None): From ab55bfd6afbddc0583830dd76da24b02fc8b27bc Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:17:58 +0200 Subject: [PATCH 3/4] [REF] Renamed variable to match conventions. bzr revid: jth@openerp.com-20100927141758-i5dpu1l7ctk39j1e --- addons/email_template/email_template.py | 45 ++++++++++++------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index d6b73a0ece1..49e99de5bf5 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -331,37 +331,34 @@ This is useful for CRM leads for example"), default.update({'name':new_name}) return super(email_template, self).copy(cr, uid, id, default, context) - def compute_pl(self, - model_object_field, - sub_model_object_field, - null_value, template_language='mako'): + def compute_pl(self, field_name, sub_field_name, null_value, template_language='mako'): """ - Returns the expression based on data provided - @param model_object_field: First level field - @param sub_model_object_field: Second level drilled down field (M2O) - @param null_value: What has to be returned if the value is empty - @param template_language: The language used for templating + Returns a template expression based on data provided + @param field_name: field name + @param sub_field_name: sub field name (M2O) + @param null_value: default value if the target value is empty + @param template_language: name of template engine @return: computed expression """ - #Configure for MAKO - copy_val = '' + + expression = '' if template_language == 'mako': - if model_object_field: - copy_val = "${object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field + if field_name: + expression = "${object." + field_name + if sub_field_name: + expression += "." + sub_field_name if null_value: - copy_val += " or '''%s'''" % null_value - copy_val += "}" + expression += " or '''%s'''" % null_value + expression += "}" elif template_language == 'django': - if model_object_field: - copy_val = "{{object." + model_object_field - if sub_model_object_field: - copy_val += "." + sub_model_object_field + if field_name: + expression = "{{object." + field_name + if sub_field_name: + expression += "." + sub_field_name if null_value: - copy_val = copy_val + "|default:'''%s'''" % null_value - copy_val = copy_val + "}}" - return copy_val + expression += "|default: '''%s'''" % null_value + expression += "}}" + return expression def onchange_model_object_field(self, cr, uid, ids, model_object_field, template_language, context=None): if not model_object_field: From 8b241bb07b78daeba54b6e7473531fa3cbe8ab94 Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 27 Sep 2010 16:22:54 +0200 Subject: [PATCH 4/4] [REF] Renamed method to match conventions. bzr revid: jth@openerp.com-20100927142254-aru8l7933o3x8cfr --- addons/email_template/email_template.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index 49e99de5bf5..ee82c917351 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -331,7 +331,7 @@ This is useful for CRM leads for example"), default.update({'name':new_name}) return super(email_template, self).copy(cr, uid, id, default, context) - def compute_pl(self, field_name, sub_field_name, null_value, template_language='mako'): + def build_expression(self, field_name, sub_field_name, null_value, template_language='mako'): """ Returns a template expression based on data provided @param field_name: field name @@ -370,7 +370,7 @@ This is useful for CRM leads for example"), res_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', field_obj.relation)], context=context) if res_ids: result['sub_object'] = res_ids[0] - result['copyvalue'] = self.compute_pl(False, + result['copyvalue'] = self.build_expression(False, False, False, template_language) @@ -379,7 +379,7 @@ This is useful for CRM leads for example"), else: #Its a simple field... just compute placeholder result['sub_object'] = False - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, False, False, template_language @@ -398,7 +398,7 @@ 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) if res_ids: result['sub_object'] = res_ids[0] - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, False, template_language @@ -408,7 +408,7 @@ This is useful for CRM leads for example"), else: #Its a simple field... just compute placeholder result['sub_object'] = False - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, False, False, template_language @@ -427,7 +427,7 @@ 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) if res_ids: result['sub_object'] = res_ids[0] - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, sub_field_obj.name, null_value, template_language @@ -437,7 +437,7 @@ This is useful for CRM leads for example"), else: #Its a simple field... just compute placeholder result['sub_object'] = False - result['copyvalue'] = self.compute_pl(field_obj.name, + result['copyvalue'] = self.build_expression(field_obj.name, False, null_value, template_language