From 81cde426e4f10e1ae569f8edaadb7a7add1be2d9 Mon Sep 17 00:00:00 2001 From: nhertz <nhertz@nrao.edu> Date: Fri, 19 Feb 2021 16:14:54 -0700 Subject: [PATCH] Added new view: `submit_capability_request` --- .../capability/views/capability_request.py | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/services/capability/capability/views/capability_request.py b/services/capability/capability/views/capability_request.py index eb52292a0..bac443219 100644 --- a/services/capability/capability/views/capability_request.py +++ b/services/capability/capability/views/capability_request.py @@ -65,7 +65,7 @@ def create_capability_request(request: Request) -> Response: return HTTPPreconditionFailed(detail=does_not_exist_msg) else: # TODO: Implement future products - new_capability_request = request.capabilities.create_request( + new_capability_request = request.capability_service.create_request( capability_name, parameters=params["parameters"], products=None ) return Response(json_body=new_capability_request.__json__()) @@ -77,6 +77,33 @@ def edit_capability_request(request: Request) -> Response: Pyramid view that accepts a request to edit a capability request URL: capability/{capability_name}/request/{request_id}/edit + :param request: POST request + :return Bad Request response, since it's not yet implemented + TODO: Implement once CapabilityVersions are supported """ - return HTTPBadRequest() + return HTTPBadRequest(detail="Editing capability requests is not yet implemented.") + + +@view_config(route_name="submit_capability_request", renderer="json") +def submit_capability_request(request: Request) -> Response: + """ + Pyramid view that accepts a request to submit a capability request + URL: capability/{capability_name}/request/{request_id}/submit + + :param request: POST request, expecting JSON parameters ["parameters", "versions"] + :return: Response with + or 412 response (HTTPPreconditionFailed) if capability request with given ID does not exist and thus cannot be + submitted + """ + capability_name = request.matchdict["capability_name"] + request_id = request.matchdict["request_id"] + capability_request = request.capability_info.lookup_capability_request(request_id) + + if not capability_request: + # Capability request not found + does_not_exist_msg = f"Capability request for {capability_name} with ID {request_id} does not exist. Cannot submit request." + return HTTPPreconditionFailed(detail=does_not_exist_msg) + else: + execution = request.capability_service.run_capability(capability_request) + return Response(body=execution.__json__()) -- GitLab