aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--backend/routes/forms/form.py10
-rw-r--r--backend/routes/forms/index.py12
-rw-r--r--backend/routes/forms/submit.py2
3 files changed, 16 insertions, 8 deletions
diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py
index ca67f13..3ea3acb 100644
--- a/backend/routes/forms/form.py
+++ b/backend/routes/forms/form.py
@@ -1,6 +1,8 @@
"""
Returns, updates or deletes a single form given an ID.
"""
+import json.decoder
+
import deepmerge
from pydantic import ValidationError
from spectree.response import Response
@@ -63,12 +65,16 @@ class SingleForm(Route):
)
async def patch(self, request: Request) -> JSONResponse:
"""Updates form by ID."""
- data = await request.json()
+ try:
+ data = await request.json()
+ except json.decoder.JSONDecodeError:
+ return JSONResponse("Expected a JSON body.", 400)
form_id = {"_id": request.path_params["form_id"]}
if raw_form := await request.state.db.forms.find_one(form_id):
if "_id" in data or "id" in data:
- return JSONResponse({"error": "locked_field"}, status_code=400)
+ if (data.get("id") or data.get("_id")) != form_id["_id"]:
+ return JSONResponse({"error": "locked_field"}, status_code=400)
# Build Data Merger
merge_strategy = [
diff --git a/backend/routes/forms/index.py b/backend/routes/forms/index.py
index 5fd90ab..22171fa 100644
--- a/backend/routes/forms/index.py
+++ b/backend/routes/forms/index.py
@@ -51,12 +51,14 @@ class FormsList(Route):
# Verify Webhook
try:
# Get url from request
- url = form_data[WebHook.__name__.lower()][WebHook.URL.value]
+ webhook = form_data[WebHook.__name__.lower()]
+ if webhook is not None:
+ url = webhook[WebHook.URL.value]
- # Validate URL
- validation = await validate_hook_url(url)
- if validation:
- return JSONResponse(validation.errors(), status_code=422)
+ # Validate URL
+ validation = await validate_hook_url(url)
+ if validation:
+ return JSONResponse(validation.errors(), status_code=422)
except KeyError:
pass
diff --git a/backend/routes/forms/submit.py b/backend/routes/forms/submit.py
index 4d15ab7..c0a50f3 100644
--- a/backend/routes/forms/submit.py
+++ b/backend/routes/forms/submit.py
@@ -233,7 +233,7 @@ class SubmitForm(Route):
embed = {
"title": "New Form Response",
"description": f"{mention} submitted a response to `{form.name}`.",
- "url": f"{constants.FRONTEND_URL}/path_to_view_form/{response.id}", # noqa # TODO: Enter Form View URL
+ "url": f"{constants.FRONTEND_URL}/form/{form.id}/{response.id}",
"timestamp": response.timestamp,
"color": 7506394,
}