aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Hassan Abouelela <[email protected]>2021-12-26 13:12:48 +0200
committerGravatar GitHub <[email protected]>2021-12-26 13:12:48 +0200
commita322e59c67522336977985f487eee1d2c952a81b (patch)
tree9c99de084ef98baea5c57733fedc2d494fad43fe
parentMerge pull request #120 from python-discord/jb3/store-correct-ip (diff)
parentModel: makes Form.id case insensitive (diff)
Merge pull request #126 from Akarys42/case-insensitive-ids
Model: makes Form.id case insensitive
-rw-r--r--backend/models/form.py4
-rw-r--r--backend/routes/forms/form.py15
2 files changed, 8 insertions, 11 deletions
diff --git a/backend/models/form.py b/backend/models/form.py
index 30ae0e7..f19ed85 100644
--- a/backend/models/form.py
+++ b/backend/models/form.py
@@ -1,7 +1,7 @@
import typing as t
import httpx
-from pydantic import BaseModel, Field, root_validator, validator
+from pydantic import constr, BaseModel, Field, root_validator, validator
from pydantic.error_wrappers import ErrorWrapper, ValidationError
from backend.constants import FormFeatures, WebHook
@@ -35,7 +35,7 @@ class _WebHook(BaseModel):
class Form(BaseModel):
"""Schema model for form."""
- id: str = Field(alias="_id")
+ id: constr(to_lower=True) = Field(alias="_id")
features: list[str]
questions: list[Question]
name: str
diff --git a/backend/routes/forms/form.py b/backend/routes/forms/form.py
index 3ea3acb..0f96b85 100644
--- a/backend/routes/forms/form.py
+++ b/backend/routes/forms/form.py
@@ -32,7 +32,7 @@ class SingleForm(Route):
async def get(self, request: Request) -> JSONResponse:
"""Returns single form information by ID."""
admin = request.user.admin if request.user.is_authenticated else False
- form_id = request.path_params["form_id"]
+ form_id = request.path_params["form_id"].lower()
filters = {
"_id": form_id
@@ -70,7 +70,7 @@ class SingleForm(Route):
except json.decoder.JSONDecodeError:
return JSONResponse("Expected a JSON body.", 400)
- form_id = {"_id": request.path_params["form_id"]}
+ form_id = {"_id": request.path_params["form_id"].lower()}
if raw_form := await request.state.db.forms.find_one(form_id):
if "_id" in data or "id" in data:
if (data.get("id") or data.get("_id")) != form_id["_id"]:
@@ -90,10 +90,7 @@ class SingleForm(Route):
except ValidationError as e:
return JSONResponse(e.errors(), status_code=422)
- await request.state.db.forms.replace_one(
- {"_id": request.path_params["form_id"]},
- form.dict()
- )
+ await request.state.db.forms.replace_one(form_id, form.dict())
return JSONResponse(form.dict())
else:
@@ -107,15 +104,15 @@ class SingleForm(Route):
async def delete(self, request: Request) -> JSONResponse:
"""Deletes form by ID."""
if not await request.state.db.forms.find_one(
- {"_id": request.path_params["form_id"]}
+ {"_id": request.path_params["form_id"].lower()}
):
return JSONResponse({"error": "not_found"}, status_code=404)
await request.state.db.forms.delete_one(
- {"_id": request.path_params["form_id"]}
+ {"_id": request.path_params["form_id"].lower()}
)
await request.state.db.responses.delete_many(
- {"form_id": request.path_params["form_id"]}
+ {"form_id": request.path_params["form_id"].lower()}
)
return JSONResponse({"status": "ok"})