From dd1f9c8d1167bdaded42707cb5df0ba85d3ce49b Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Thu, 6 Apr 2023 15:24:53 +0200
Subject: [PATCH] added endpoints for view from selection option

Former-commit-id: ae6330fbad92489587881a89d72950142869f260 [formerly 17115389e9e0cf6578671fbf0e29a46d0571dea5]
Former-commit-id: 4f9c7e71f48dcddc1bebd6734ca6d22b61ff4d70
---
 drugstone/urls.py  |  5 +++--
 drugstone/views.py | 19 +++++++++++++++----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/drugstone/urls.py b/drugstone/urls.py
index 959a161..eb547c7 100755
--- a/drugstone/urls.py
+++ b/drugstone/urls.py
@@ -19,7 +19,7 @@ from django.urls import path
 from drugstone.views import map_nodes, tasks_view, result_view, \
     graph_export, TissueView, TissueExpressionView, query_tissue_proteins, TaskView, \
     adjacent_drugs, adjacent_disorders, fetch_edges, create_network, load_network, get_license, get_datasets, \
-    get_max_tissue_expression, convert_compact_ids, get_default_params, send_bugreport, save_selection, get_view
+    get_max_tissue_expression, convert_compact_ids, get_default_params, send_bugreport, save_selection, get_view, get_view_infos
 
 # cache time is 6 hours
 urlpatterns = [
@@ -44,5 +44,6 @@ urlpatterns = [
     path('get_license', get_license),
     path('send_bugreport/', send_bugreport),
     path('save_selection', save_selection),
-    path('view/', get_view)
+    path('view/', get_view),
+    path('view_infos', get_view_infos)
 ]
diff --git a/drugstone/views.py b/drugstone/views.py
index 375c602..e4cf1bb 100755
--- a/drugstone/views.py
+++ b/drugstone/views.py
@@ -697,7 +697,7 @@ def save_selection(request) -> Response:
     config = request.data.get("config")
     network = request.data.get("network")
 
-    Network.objects.create(id=token_str, config=config, nodes=network["nodes"], edges=network["edges"])
+    Network.objects.create(id=token_str, config=json.dumps(config), nodes=json.dumps(network["nodes"]), edges=json.dumps(network["edges"]))
     return Response({
         'token': token_str,
     })
@@ -707,14 +707,25 @@ def get_view(request) -> Response:
     token = request.query_params.get('token')
     network = Network.objects.get(id=token)
     return Response({
-        'config': network.config,
+        'config': json.loads(network.config),
+        'created_at': network.created_at,
         'network': {
-            'nodes': network.nodes,
-            'edges': network.edges,
+            'nodes': json.loads(network.nodes),
+            'edges': json.loads(network.edges),
         }
     })
 
 
+@api_view(['POST'])
+def get_view_infos(request) -> Response:
+    tokens = request.data.get('tokens')
+    networks = Network.objects.filter(id__in = tokens)
+    return Response([{
+        'token': n.id,
+        'created_at': n.created_at,
+    } for n in networks])
+
+
 @api_view(['GET'])
 def get_max_tissue_expression(request) -> Response:
     tissue = Tissue.objects.get(id=request.query_params.get('tissue'))
-- 
GitLab