From d23f3c0acfa8845c875040f5163558571ca3283a Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Wed, 9 Dec 2020 19:34:03 +0200 Subject: Add validation level for same ID forms --- backend/routes/forms/new.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'backend/routes/forms/new.py') diff --git a/backend/routes/forms/new.py b/backend/routes/forms/new.py index ff39f12..5a30a27 100644 --- a/backend/routes/forms/new.py +++ b/backend/routes/forms/new.py @@ -26,5 +26,10 @@ class FormCreate(Route): except ValidationError as e: return JSONResponse(e.errors()) + if await request.state.db.forms.find_one({"_id": form.id}): + return JSONResponse({ + "error": "Form with same ID already exists." + }) + await request.state.db.forms.insert_one(form.dict(by_alias=True)) return JSONResponse(form.dict()) -- cgit v1.2.3 From 362c665b42101762a6d55691a670ca17524a85e9 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Thu, 10 Dec 2020 14:52:55 +0200 Subject: Make JSON errors more JS friendly and add response codes Co-authored-by: Joe Banks --- backend/routes/forms/new.py | 2 +- backend/routes/forms/submit.py | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'backend/routes/forms/new.py') diff --git a/backend/routes/forms/new.py b/backend/routes/forms/new.py index 5a30a27..6437a4a 100644 --- a/backend/routes/forms/new.py +++ b/backend/routes/forms/new.py @@ -29,7 +29,7 @@ class FormCreate(Route): if await request.state.db.forms.find_one({"_id": form.id}): return JSONResponse({ "error": "Form with same ID already exists." - }) + }, status_code=400) await request.state.db.forms.insert_one(form.dict(by_alias=True)) return JSONResponse(form.dict()) diff --git a/backend/routes/forms/submit.py b/backend/routes/forms/submit.py index 054aecb..3ecbda0 100644 --- a/backend/routes/forms/submit.py +++ b/backend/routes/forms/submit.py @@ -79,12 +79,12 @@ class SubmitForm(Route): if FormFeatures.COLLECT_EMAIL.value in form.features and "email" not in response["user"]: # noqa return JSONResponse({ - "error": "User data doesn't include email." - }) + "error": "email_required" + }, status_code=400) else: return JSONResponse({ - "error": "Missing Discord user data" - }) + "error": "missing_discord_data" + }, status_code=400) missing_fields = [] for question in form.questions: @@ -93,8 +93,9 @@ class SubmitForm(Route): if missing_fields: return JSONResponse({ - "error": f"Following missing fields: {', '.join(missing_fields)}." - }) + "error": "missing_fields", + "fields": missing_fields + }, status_code=400) try: response_obj = FormResponse(**response) -- cgit v1.2.3