expression: fix function.search() when it does not restrict
Triggered by [Bug 702340]
When we try to search a composite expression like:
[( 'ourfoo.subfoo', '=' , True) ]
.. where subfoo is a function field of the model ofourfoo field,
the framework will call subfoo.search([('subfoo','=',True)]).
The latter shall return a domain expression that will restrict
the search on 'ourfoo'.
When the returned expression is empty, meaning "match all", the algebra
on the parent expression would come up with an invalid [..., '&', ( 1, '=', 1) ]
sequence.
bzr revid: p_christ@hol.gr-20110117084108-vt1qe72lhw8ldxqm
This commit is contained in:
@@ -167,12 +167,15 @@ class expression(object):
|
||||
self.__exp[i] = self.__DUMMY_LEAF
|
||||
else:
|
||||
subexp = field.search(cr, uid, table, left, [self.__exp[i]], context=context)
|
||||
# we assume that the expression is valid
|
||||
# we create a dummy leaf for forcing the parsing of the resulting expression
|
||||
self.__exp[i] = '&'
|
||||
self.__exp.insert(i + 1, self.__DUMMY_LEAF)
|
||||
for j, se in enumerate(subexp):
|
||||
self.__exp.insert(i + 2 + j, se)
|
||||
if not subexp:
|
||||
self.__exp[i] = self.__DUMMY_LEAF
|
||||
else:
|
||||
# we assume that the expression is valid
|
||||
# we create a dummy leaf for forcing the parsing of the resulting expression
|
||||
self.__exp[i] = '&'
|
||||
self.__exp.insert(i + 1, self.__DUMMY_LEAF)
|
||||
for j, se in enumerate(subexp):
|
||||
self.__exp.insert(i + 2 + j, se)
|
||||
# else, the value of the field is store in the database, so we search on it
|
||||
|
||||
elif field._type == 'one2many':
|
||||
|
||||
Reference in New Issue
Block a user