From 94bcde012f1473f828f89a39addc8994114f9a58 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Wed, 8 Jul 2020 16:18:20 +0200 Subject: Implement scenario routes --- .../opendc/api/v2/scenarios/scenarioId/endpoint.py | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py (limited to 'web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py') diff --git a/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py b/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py new file mode 100644 index 00000000..1baa157a --- /dev/null +++ b/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py @@ -0,0 +1,57 @@ +from opendc.models.scenario import Scenario +from opendc.models.portfolio import Portfolio +from opendc.util.rest import Response + + +def GET(request): + """Get this Scenario.""" + + request.check_required_parameters(path={'scenarioId': 'string'}) + + scenario = Scenario.from_id(request.params_path['scenarioId']) + + scenario.check_exists() + scenario.check_user_access(request.google_id, False) + + return Response(200, 'Successfully retrieved scenario.', scenario.obj) + + +def PUT(request): + """Update this Scenarios name.""" + + request.check_required_parameters(path={'scenarioId': 'string'}, body={'scenario': { + 'name': 'string', + }}) + + scenario = Scenario.from_id(request.params_path['scenarioId']) + + scenario.check_exists() + scenario.check_user_access(request.google_id, True) + + scenario.set_property('name', + request.params_body['scenario']['name']) + + scenario.update() + + return Response(200, 'Successfully updated scenario.', scenario.obj) + + +def DELETE(request): + """Delete this Scenario.""" + + request.check_required_parameters(path={'scenarioId': 'string'}) + + scenario = Scenario.from_id(request.params_path['scenarioId']) + + scenario.check_exists() + scenario.check_user_access(request.google_id, True) + + portfolio = Portfolio.from_id(scenario.obj['portfolioId']) + portfolio.check_exists() + if request.params_path['scenarioId'] in portfolio.obj['scenarioIds']: + portfolio.obj['scenarioIds'].remove(request.params_path['scenarioId']) + portfolio.update() + + old_object = scenario.delete() + + return Response(200, 'Successfully deleted scenario.', old_object) -- cgit v1.2.3 From 0a1579e749663e872a53e25fa9fd26e209a9e019 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Wed, 8 Jul 2020 16:19:14 +0200 Subject: Fix layout --- web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py') diff --git a/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py b/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py index 1baa157a..02d39063 100644 --- a/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py +++ b/web-server/opendc/api/v2/scenarios/scenarioId/endpoint.py @@ -29,7 +29,7 @@ def PUT(request): scenario.check_user_access(request.google_id, True) scenario.set_property('name', - request.params_body['scenario']['name']) + request.params_body['scenario']['name']) scenario.update() -- cgit v1.2.3