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

Reply via email to