From 27cb5c9511e7caad82450cb5a24544bbb119494b Mon Sep 17 00:00:00 2001 From: Andrea Date: Tue, 14 Mar 2017 15:48:03 +0100 Subject: [PATCH] Avoid display duplicated nodes --- bi_view_editor/models/ir_model.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bi_view_editor/models/ir_model.py b/bi_view_editor/models/ir_model.py index 0a3bb124..06de5c8c 100644 --- a/bi_view_editor/models/ir_model.py +++ b/bi_view_editor/models/ir_model.py @@ -221,10 +221,22 @@ class IrModel(models.Model): join_nodes.append(field) return join_nodes + def remove_duplicate_nodes(join_nodes): + seen = set() + nodes_list = [] + for node in join_nodes: + node_tuple = tuple(node.items()) + if node_tuple not in seen: + seen.add(node_tuple) + nodes_list.append(node) + return nodes_list + model_ids = _get_model_ids(field_data) keys = [(field['table_alias'], field['id']) for field in field_data if field.get('join_node', -1) != -1] join_nodes = _get_join_nodes_dict(model_ids, new_field) + join_nodes = remove_duplicate_nodes(join_nodes) + return filter( lambda x: 'id' not in x or (x['table_alias'], x['id']) not in keys, join_nodes)