Reviewers: ,
Please review this at http://codereview.tryton.org/226004/
Affected files:
M trytond/model/modelview.py
Index: trytond/model/modelview.py
===================================================================
--- a/trytond/model/modelview.py
+++ b/trytond/model/modelview.py
@@ -384,6 +384,7 @@
def __view_look_dom(self, element, type, fields_width=None):
pool = Pool()
translation_obj = pool.get('ir.translation')
+ model_data_obj = pool.get('ir.model.data')
if fields_width is None:
fields_width = {}
@@ -410,6 +411,29 @@
if relation and element.tag == 'field':
childs = False
views = {}
+ mode = (element.get('mode')
or 'tree,form').split(',')
+ view_ids = []
+ if element.get('view_ids'):
+ for view_id in
element.get('view_ids').split(','):
+ view_ids.append(model_data_obj.get_id(
+ *view_id.split(',')))
+ relation_obj = pool.get(relation)
+ if (not len(element)
+ and type == 'form'
+ and field._type in
('one2many', 'many2many')):
+ if view_ids:
+ mode = []
+ for view_id in view_ids:
+ view = relation_obj.fields_view_get(
+ view_id=view_id)
+ mode.append(view['type'])
+ views[view['type']] = view
+ else:
+ for view_type in mode:
+ views[view_type] = \
+ relation_obj.fields_view_get(
+ view_type=view_type)
+ # TODO to remove
for field in element:
if field.tag in ('form', 'tree', 'graph'):
field2 = copy.copy(field)
@@ -434,7 +458,6 @@
if Transaction().language != 'en_US':
_translate_field(field2)
- relation_obj = pool.get(relation)
if
hasattr(relation_obj, '_view_look_dom_arch'):
xarch, xfields = \
relation_obj._view_look_dom_arch(
@@ -444,7 +467,11 @@
'fields': xfields
}
element.remove(field)
- attrs = {'views': views}
+ attrs = {
+ 'views': views,
+ 'mode': mode,
+ 'view_ids': view_ids,
+ }
fields_attrs[element.get(attr)] = attrs
if element.get('name') in fields_width:
element.set('width',
str(fields_width[element.get('name')]))
--
[email protected] mailing list