aboutsummaryrefslogtreecommitdiffstats
path: root/backend/routes/forms/response.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/routes/forms/response.py')
-rw-r--r--backend/routes/forms/response.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/backend/routes/forms/response.py b/backend/routes/forms/response.py
index acaa647..d8d8d17 100644
--- a/backend/routes/forms/response.py
+++ b/backend/routes/forms/response.py
@@ -1,12 +1,14 @@
"""
Returns or deletes form response by ID.
"""
+from spectree import Response as RouteResponse
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
+from backend.validation import ErrorMessage, OkayResponse, api
class Response(Route):
@@ -16,8 +18,12 @@ class Response(Route):
path = "/{form_id:str}/responses/{response_id:str}"
@requires(["authenticated", "admin"])
+ @api.validate(
+ resp=RouteResponse(HTTP_200=FormResponse, HTTP_404=ErrorMessage),
+ tags=["forms", "responses"]
+ )
async def get(self, request: Request) -> JSONResponse:
- """Returns single form response by ID."""
+ """Return a single form response by ID."""
if raw_response := await request.state.db.responses.find_one(
{
"_id": request.path_params["response_id"],
@@ -30,8 +36,12 @@ class Response(Route):
return JSONResponse({"error": "not_found"}, status_code=404)
@requires(["authenticated", "admin"])
+ @api.validate(
+ resp=RouteResponse(HTTP_200=OkayResponse, HTTP_404=ErrorMessage),
+ tags=["forms", "responses"]
+ )
async def delete(self, request: Request) -> JSONResponse:
- """Deletes form response by ID."""
+ """Delete a form response by ID."""
if not await request.state.db.responses.find_one(
{
"_id": request.path_params["response_id"],