diff options
-rw-r--r-- | backend/routes/forms/form.py | 10 | ||||
-rw-r--r-- | backend/routes/forms/index.py | 12 | ||||
-rw-r--r-- | backend/routes/forms/submit.py | 2 |
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, } |