From e8ffc09b30509ba80f1c74fb5269b0b77ff67458 Mon Sep 17 00:00:00 2001 From: Thomas Rehn Date: Fri, 24 Apr 2015 13:09:05 +0200 Subject: [PATCH] [FIX] ir.ui.view (diagram): do not depend on semi-random order of _columns The ir.ui.view.graph_get() method depended on the natural semi-random order of Python dict keys in the _columns dict. When the number and/or names of the _columns happened to yield the o2m field of the "incoming transitions" *before* the "outgoing transitions" of the "Node model" (e.g. workflow activity), it would swap the incoming and outgoing transitions fields around, causing a crash later in the `tools.graph.process` method (currently an infinite loop in the `tree_order()` method of tools.graph.py). Closes #3614 Fixes https://bugs.launchpad.net/openobject-server/+bug/1316948 opw-633765 --- openerp/addons/base/ir/ir_ui_view.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index 393e5cf6545..8d8fb373290 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -232,15 +232,15 @@ class view(osv.osv): if model_value._obj==node_obj: _Node_Field=model_key _Model_Field=model_value._fields_id - flag=False for node_key,node_value in _Node_Obj._columns.items(): if node_value._type=='one2many': if node_value._obj==conn_obj: - if src_node in _Arrow_Obj._columns and flag: + # _Source_Field = "Incoming Arrows" (connected via des_node) + if node_value._fields_id == des_node: _Source_Field=node_key - if des_node in _Arrow_Obj._columns and not flag: + # _Destination_Field = "Outgoing Arrows" (connected via src_node) + if node_value._fields_id == src_node: _Destination_Field=node_key - flag = True datas = _Model_Obj.read(cr, uid, id, [],context) for a in _Node_Obj.read(cr,uid,datas[_Node_Field],[]):