From 2a238c344ec9b07bfa8393078d60d8dcfc8f9d0e Mon Sep 17 00:00:00 2001 From: AndiMajore <andi.majore@googlemail.com> Date: Fri, 28 Oct 2022 19:48:53 +0200 Subject: [PATCH] fixed json download Former-commit-id: 27cd4a3c32de0fb947169a8e33faa0e8e3a07eba [formerly 4729717f5e695b8228221b6a861d042327eabd12] Former-commit-id: 33e465a1c42556c6ed13d98aa5e1e7e88299d573 --- drugstone/views.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drugstone/views.py b/drugstone/views.py index 04c0f1f..c053ff4 100755 --- a/drugstone/views.py +++ b/drugstone/views.py @@ -467,11 +467,6 @@ def graph_export(request) -> Response: G = nx.Graph() node_map = dict() for node in nodes: - # drugstone_id is not interesting outside of drugstone - # try: - # del node['drugstone_id'] - # except KeyError: - # pass # networkx does not support datatypes such as lists or dicts for key in list(node.keys()): if isinstance(node[key], list) or isinstance(node[key], dict): @@ -506,7 +501,23 @@ def graph_export(request) -> Response: data = nx.generate_graphml(G) response = HttpResponse(data, content_type='application/xml') elif fmt == 'json': - data = json.dumps(nx.readwrite.json_graph.node_link_data(G)) + data = nx.readwrite.json_graph.node_link_data(G) + del data['graph'] + del data['multigraph'] + remove_node_properties = ['color', 'shape', 'border_width', 'group_name', 'border_width_selected', 'shadow', + 'group_id', 'drugstone_type', 'font'] + remove_edge_properties = ['group_name', 'color', 'dashes', 'shadow', 'id'] + for node in data['nodes']: + for prop in remove_node_properties: + if prop in node: + del node[prop] + for edge in data['links']: + for prop in remove_edge_properties: + if prop in edge: + del edge[prop] + data["edges"] = data.pop("links") + data = json.dumps(data) + data = data.replace('"{', '{').replace('}"', '}').replace('"[', '[').replace(']"', ']').replace('\\"', '"') response = HttpResponse(data, content_type='application/json') elif fmt == 'csv': data = pd.DataFrame(nx.to_numpy_array(G), columns=G.nodes(), index=G.nodes()) -- GitLab