diff options
-rw-r--r-- | backend/routes/forms/response.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py new file mode 100644 index 0000000..4466c21 --- /dev/null +++ b/backend/routes/forms/response.py @@ -0,0 +1,27 @@ +""" +Returns single from response by ID. +""" +from starlette.authentication import requires +from starlette.requests import Request +from starlette.responses import JSONResponse + +from backend.models import FormResponse +from backend.route import Route + + +class Response(Route): + """Get single form response by ID.""" + + name = "response" + path = "/responses/{response_id:str}" + + @requires(["authenticated", "admin"]) + async def get(self, request: Request) -> JSONResponse: + """Returns single form response by ID.""" + if raw_response := await request.state.db.responses.find_one( + {"_id": request.path_params["response_id"]} + ): + response = FormResponse(**raw_response) + return JSONResponse(response.dict()) + else: + return JSONResponse({"error": "not_found"}, status_code=404) |