[FIX] browse()/browse_record: use iterables instead of forcing lists when constructing browse_lists
This allows iterable list_class implementations bzr revid: odo@openerp.com-20140407105740-elbz311w5u9e8eos
This commit is contained in:
parent
5be8fc620e
commit
5be9e5612f
|
@ -466,7 +466,12 @@ class browse_record(object):
|
|||
else:
|
||||
new_data[field_name] = browse_null()
|
||||
elif field_column._type in ('one2many', 'many2many') and len(result_line[field_name]):
|
||||
new_data[field_name] = self._list_class([browse_record(self._cr, self._uid, id, self._table.pool.get(field_column._obj), self._cache, context=self._context, list_class=self._list_class, fields_process=self._fields_process) for id in result_line[field_name]], self._context)
|
||||
new_data[field_name] = self._list_class(
|
||||
(browse_record(self._cr, self._uid, id, self._table.pool.get(field_column._obj),
|
||||
self._cache, context=self._context, list_class=self._list_class,
|
||||
fields_process=self._fields_process)
|
||||
for id in result_line[field_name]),
|
||||
context=self._context)
|
||||
elif field_column._type == 'reference':
|
||||
if result_line[field_name]:
|
||||
if isinstance(result_line[field_name], browse_record):
|
||||
|
@ -4579,7 +4584,7 @@ class BaseModel(object):
|
|||
if isinstance(select, (int, long)):
|
||||
return browse_record(cr, uid, select, self, cache, context=context, list_class=self._list_class, fields_process=fields_process)
|
||||
elif isinstance(select, list):
|
||||
return self._list_class([browse_record(cr, uid, id, self, cache, context=context, list_class=self._list_class, fields_process=fields_process) for id in select], context=context)
|
||||
return self._list_class((browse_record(cr, uid, id, self, cache, context=context, list_class=self._list_class, fields_process=fields_process) for id in select), context=context)
|
||||
else:
|
||||
return browse_null()
|
||||
|
||||
|
|
Loading…
Reference in New Issue