summaryrefslogtreecommitdiff
path: root/web-server/opendc
diff options
context:
space:
mode:
authorGeorgios Andreadis <info@gandreadis.com>2020-07-02 18:39:28 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:47:21 +0200
commitf119fc78dda4d1e828dde04f378a63a93e3a0a7e (patch)
treebea1eace5d47f21a7ccb835c6a6079bc92e48710 /web-server/opendc
parent7f27a6370a0af25e1bf6ff8f46360c6c26c21e0b (diff)
Add current progress on frontend port
Diffstat (limited to 'web-server/opendc')
-rw-r--r--web-server/opendc/api/v2/simulations/endpoint.py3
-rw-r--r--web-server/opendc/api/v2/users/endpoint.py1
-rw-r--r--web-server/opendc/api/v2/users/userId/endpoint.py8
-rw-r--r--web-server/opendc/api/v2/users/userId/test_endpoint.py2
-rw-r--r--web-server/opendc/models/topology.py5
5 files changed, 17 insertions, 2 deletions
diff --git a/web-server/opendc/api/v2/simulations/endpoint.py b/web-server/opendc/api/v2/simulations/endpoint.py
index bcdea650..993e317a 100644
--- a/web-server/opendc/api/v2/simulations/endpoint.py
+++ b/web-server/opendc/api/v2/simulations/endpoint.py
@@ -22,6 +22,9 @@ def POST(request):
simulation.set_property('experimentIds', [])
simulation.insert()
+ topology.set_property('simulationId', simulation.get_id())
+ topology.update()
+
user = User.from_google_id(request.google_id)
user.obj['authorizations'].append({'simulationId': simulation.get_id(), 'authorizationLevel': 'OWN'})
user.update()
diff --git a/web-server/opendc/api/v2/users/endpoint.py b/web-server/opendc/api/v2/users/endpoint.py
index c597732f..0dcf2463 100644
--- a/web-server/opendc/api/v2/users/endpoint.py
+++ b/web-server/opendc/api/v2/users/endpoint.py
@@ -26,4 +26,5 @@ def POST(request):
user.check_already_exists()
user.insert()
+
return Response(200, 'Successfully created user.', user.obj)
diff --git a/web-server/opendc/api/v2/users/userId/endpoint.py b/web-server/opendc/api/v2/users/userId/endpoint.py
index eedb2e3c..7a4fb104 100644
--- a/web-server/opendc/api/v2/users/userId/endpoint.py
+++ b/web-server/opendc/api/v2/users/userId/endpoint.py
@@ -1,3 +1,4 @@
+from opendc.models.simulation import Simulation
from opendc.models.user import User
from opendc.util.rest import Response
@@ -46,6 +47,13 @@ def DELETE(request):
user.check_exists()
user.check_correct_user(request.google_id)
+ for authorization in user.obj['authorizations']:
+ if authorization['authorizationLevel'] != 'OWN':
+ continue
+
+ simulation = Simulation.from_id(authorization['simulationId'])
+ simulation.delete()
+
old_object = user.delete()
return Response(200, 'Successfully deleted user.', old_object)
diff --git a/web-server/opendc/api/v2/users/userId/test_endpoint.py b/web-server/opendc/api/v2/users/userId/test_endpoint.py
index 0d590129..cdff2229 100644
--- a/web-server/opendc/api/v2/users/userId/test_endpoint.py
+++ b/web-server/opendc/api/v2/users/userId/test_endpoint.py
@@ -46,7 +46,7 @@ def test_delete_user_different_user(client, mocker):
def test_delete_user(client, mocker):
- mocker.patch.object(DB, 'fetch_one', return_value={'_id': '1', 'googleId': 'test'})
+ mocker.patch.object(DB, 'fetch_one', return_value={'_id': '1', 'googleId': 'test', 'authorizations': []})
mocker.patch.object(DB, 'delete_one', return_value={'googleId': 'test'})
res = client.delete('/api/v2/users/1')
assert 'googleId' in res.json['content']
diff --git a/web-server/opendc/models/topology.py b/web-server/opendc/models/topology.py
index 1c717221..0ceecec5 100644
--- a/web-server/opendc/models/topology.py
+++ b/web-server/opendc/models/topology.py
@@ -18,7 +18,10 @@ class Topology(Model):
:param edit_access: True when edit access should be checked, otherwise view access.
"""
user = User.from_google_id(google_id)
+ if 'simulationId' not in self.obj:
+ raise ClientError(Response(400, 'Missing simulationId in topology.'))
+
authorizations = list(
filter(lambda x: str(x['simulationId']) == str(self.obj['simulationId']), user.obj['authorizations']))
if len(authorizations) == 0 or (edit_access and authorizations[0]['authorizationLevel'] == 'VIEW'):
- raise ClientError(Response(403, "Forbidden from retrieving topology."))
+ raise ClientError(Response(403, 'Forbidden from retrieving topology.'))