From 0de6710c3c43db55aad94bfb4a59a1f87f4436b4 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 5 Jun 2014 12:05:24 +0200 Subject: [PATCH] [IMP] guard for None enum, remove 1 level of indent --- openerp/addons/base/ir/ir_qweb.py | 64 +++++++++++++++---------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py index d74ba0566f0..a7183eacc7a 100644 --- a/openerp/addons/base/ir/ir_qweb.py +++ b/openerp/addons/base/ir/ir_qweb.py @@ -354,41 +354,41 @@ class QWeb(orm.AbstractModel): def render_tag_foreach(self, element, template_attributes, generated_attributes, qwebcontext): expr = template_attributes["foreach"] enum = self.eval_object(expr, qwebcontext) - if enum is not None: - varname = template_attributes['as'].replace('.', '_') - copy_qwebcontext = qwebcontext.copy() - size = -1 - if isinstance(enum, collections.Sized): - size = len(enum) - copy_qwebcontext["%s_size" % varname] = size - copy_qwebcontext["%s_all" % varname] = enum - ru = [] - for index, item in enumerate(enum): - copy_qwebcontext.update({ - varname: item, - '%s_value' % varname: item, - '%s_index' % varname: index, - '%s_first' % varname: index == 0, - '%s_last' % varname: index + 1 == size, - }) - if index % 2: - copy_qwebcontext.update({ - '%s_parity' % varname: 'odd', - '%s_even' % varname: False, - '%s_odd' % varname: True, - }) - else: - copy_qwebcontext.update({ - '%s_parity' % varname: 'even', - '%s_even' % varname: True, - '%s_odd' % varname: False, - }) - ru.append(self.render_element(element, template_attributes, generated_attributes, copy_qwebcontext)) - return "".join(ru) - else: + if enum is None: template = qwebcontext.get('__template__') raise QWebException("foreach enumerator %r is not defined while rendering template %r" % (expr, template), template=template) + varname = template_attributes['as'].replace('.', '_') + copy_qwebcontext = qwebcontext.copy() + size = -1 + if isinstance(enum, collections.Sized): + size = len(enum) + copy_qwebcontext["%s_size" % varname] = size + copy_qwebcontext["%s_all" % varname] = enum + ru = [] + for index, item in enumerate(enum): + copy_qwebcontext.update({ + varname: item, + '%s_value' % varname: item, + '%s_index' % varname: index, + '%s_first' % varname: index == 0, + '%s_last' % varname: index + 1 == size, + }) + if index % 2: + copy_qwebcontext.update({ + '%s_parity' % varname: 'odd', + '%s_even' % varname: False, + '%s_odd' % varname: True, + }) + else: + copy_qwebcontext.update({ + '%s_parity' % varname: 'even', + '%s_even' % varname: True, + '%s_odd' % varname: False, + }) + ru.append(self.render_element(element, template_attributes, generated_attributes, copy_qwebcontext)) + return "".join(ru) + def render_tag_if(self, element, template_attributes, generated_attributes, qwebcontext): if self.eval_bool(template_attributes["if"], qwebcontext): return self.render_element(element, template_attributes, generated_attributes, qwebcontext)