KERNEL: allow subfield query on one2many
authorced <>
Tue, 19 Jun 2007 13:34:06 +0000 (13:34 +0000)
committerced <>
Tue, 19 Jun 2007 13:34:06 +0000 (13:34 +0000)
bzr revid: ced-067e4ec9e0ff4b8507528a6a2340fa6a889489ee

bin/osv/orm.py

index 3b0cf32..73c3410 100644 (file)
@@ -1376,10 +1376,19 @@ class orm(object):
                                if (table._table not in tables):
                                        tables.append(table._table)
                                        joins.append(('id', 'join', '%s.%s' % (self._table, self._inherits[table._name]), table))
-                       field = table._columns.get(args[i][0],False)
+                       fargs = args[i][0].split('.', 1)
+                       field = table._columns.get(fargs[0],False)
                        if not field:
                                i+=1
                                continue
+                       if len(fargs) > 1:
+                               if field._type == 'many2one':
+                                       args[i] = (fargs[0], 'in', self.pool.get(field._obj).search(cr, user, [(fargs[1], args[i][1], args[i][2])], context=context))
+                                       i+=1
+                                       continue
+                               else:
+                                       i+=1
+                                       continue
                        if field._type=='one2many':
                                field_obj = self.pool.get(field._obj)
 
@@ -1395,7 +1404,7 @@ class orm(object):
                                i+=1
 
                        elif field._type=='many2many':
-                               #XXX Fixme
+                               #FIXME
                                if args[i][1]=='child_of':
                                        if isinstance(args[i][2], basestring):
                                                ids2 = [x[0] for x in self.pool.get(field._obj).name_search(cr, user, args[i][2], [], 'like')]