diff --git a/services/capability/capability/views/capability_request.py b/services/capability/capability/views/capability_request.py index eb52292a0722b331cd066af4b39f002077050ef0..bac44321971333f3a48aef57c377d1f1149a61ff 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__())