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