From a43f7940dcb9a3fa32952b27fc654dc64e1a853d Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Mon, 27 Feb 2012 11:09:53 +0100 Subject: [PATCH] [FIX] ir.model: workaround for broken Python 2.6 implementations Apparently on some RedHat/CentOS version certain Python 2.6 version do not support more than 4 nested levels of boolean filters. lp bug: https://launchpad.net/bugs/939653 fixed bzr revid: odo@openerp.com-20120227100953-2wgr0l621tpu1x4x --- openerp/addons/base/ir/ir_model.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index e8ce3adb592..fdce0d7c483 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -35,12 +35,14 @@ import pooler _logger = logging.getLogger(__name__) def _get_fields_type(self, cr, uid, context=None): + # Avoid too many nested `if`s below, as RedHat's Python 2.6 + # break on it. See bug 939653. return sorted([(k,k) for k,v in fields.__dict__.iteritems() - if type(v) == types.TypeType - if issubclass(v, fields._column) - if v != fields._column - if not v._deprecated - if not issubclass(v, fields.function)]) + if type(v) == types.TypeType and \ + issubclass(v, fields._column) and \ + v != fields._column and \ + not v._deprecated and \ + not issubclass(v, fields.function)]) def _in_modules(self, cr, uid, ids, field_name, arg, context=None): #pseudo-method used by fields.function in ir.model/ir.model.fields