From 3a1c693259a26e42479c1d403446899c88c20d55 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Fri, 4 Dec 2015 18:22:32 +0100 Subject: [PATCH] [FIX] osv: fix boolean in domain for custom field When a new column has been added after that some data already exists, the old lines will keep an empty/null value. So when we search is the new field is equals to False or if it is different of True, we need to match the null values. Backport of de3b64018aac6f310847e04b02b8b2bd64768009 --- openerp/osv/expression.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index a7539dd6108..722937fb438 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -1149,7 +1149,7 @@ class expression(object): else: # Must not happen raise ValueError("Invalid domain term %r" % (leaf,)) - elif right == False and (left in model._columns) and model._columns[left]._type == "boolean" and (operator == '='): + elif (left in model._columns) and model._columns[left]._type == "boolean" and ((operator == '=' and right is False) or (operator == '!=' and right is True)): query = '(%s."%s" IS NULL or %s."%s" = false )' % (table_alias, left, table_alias, left) params = [] @@ -1157,7 +1157,8 @@ class expression(object): query = '%s."%s" IS NULL ' % (table_alias, left) params = [] - elif right == False and (left in model._columns) and model._columns[left]._type == "boolean" and (operator == '!='): + elif (left in model._columns) and model._columns[left]._type == "boolean" and ((operator == '!=' and right is False) or (operator == '==' and right is True)): + query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table_alias, left, table_alias, left) params = []