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 = []