[RECOMMIT] Recommitting the patch for multilevel _inherits search support

lp bug: https://launchpad.net/bugs/362280 fixed

bzr revid: jvo@tinyerp.com-20090818134445-d7dxaaqlh34oiypz
This commit is contained in:
Jay (Open ERP) 2009-08-18 19:14:45 +05:30
parent 7913a8c469
commit e036492669
1 changed files with 16 additions and 7 deletions

View File

@ -103,14 +103,23 @@ class expression(object):
left, operator, right = e
working_table = table
if left in table._inherit_fields:
working_table = table.pool.get(table._inherit_fields[left][0])
if working_table not in self.__tables.values():
self.__joins.append(('%s.%s=%s.%s' % (working_table._table, 'id', table._table, table._inherits[working_table._name]), working_table._table))
self.__tables[i] = working_table
main_table = table
fargs = left.split('.', 1)
index = i
if left in table._inherit_fields:
while True:
field = main_table._columns.get(fargs[0], False)
if field:
working_table = main_table
self.__tables[i] = working_table
break
working_table = main_table.pool.get(main_table._inherit_fields[left][0])
if working_table not in self.__tables.values():
self.__joins.append(('%s.%s=%s.%s' % (working_table._table, 'id', main_table._table, main_table._inherits[working_table._name]), working_table._table))
self.__tables[index] = working_table
index += 1
main_table = working_table
field = working_table._columns.get(fargs[0], False)
if not field:
if left == 'id' and operator == 'child_of':