[IMP] guard for None enum, remove 1 level of indent
authorXavier Morel <xmo@openerp.com>
Thu, 5 Jun 2014 10:05:24 +0000 (12:05 +0200)
committerXavier Morel <xmo@openerp.com>
Thu, 5 Jun 2014 10:05:24 +0000 (12:05 +0200)
openerp/addons/base/ir/ir_qweb.py

index d74ba05..a7183ea 100644 (file)
@@ -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)