From 5948acaba542b8a1347c4c039635ad4a8066d2d8 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Sun, 13 Dec 2020 15:29:26 +0200 Subject: Add custom dict method in form to return sometimes only public fields --- backend/models/form.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'backend/models') diff --git a/backend/models/form.py b/backend/models/form.py index 8d7fe9b..6b3c8bb 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -5,6 +5,8 @@ from pydantic import BaseModel, Field, validator from backend.constants import FormFeatures from .question import Question +PUBLIC_FIELDS = ["id", "features", "questions", "name", "description"] + class Form(BaseModel): """Schema model for form.""" @@ -31,3 +33,12 @@ class Form(BaseModel): raise ValueError("COLLECT_EMAIL feature require REQUIRES_LOGIN feature.") return value + + def dict(self, admin: bool = True, **kwargs: t.Dict) -> t.Dict[str, t.Any]: + """Wrapper for original function to exclude private data for public access.""" + data = super().dict(**kwargs) + + if admin: + return data + + return {field: data[field] for field in PUBLIC_FIELDS} -- cgit v1.2.3 From 16d4cf38086f4f8bce292fa3781913d67c5d3443 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Sun, 13 Dec 2020 16:14:02 +0200 Subject: Simplify dict function --- backend/models/form.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'backend/models') diff --git a/backend/models/form.py b/backend/models/form.py index 6b3c8bb..400f8ad 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -37,8 +37,4 @@ class Form(BaseModel): def dict(self, admin: bool = True, **kwargs: t.Dict) -> t.Dict[str, t.Any]: """Wrapper for original function to exclude private data for public access.""" data = super().dict(**kwargs) - - if admin: - return data - - return {field: data[field] for field in PUBLIC_FIELDS} + return {field: data[field] for field in PUBLIC_FIELDS} if admin else data -- cgit v1.2.3 From 0108615be0eaefa1419bc2aa29c7fa33407a16f1 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 13 Dec 2020 19:24:40 +0000 Subject: Fix data sanitization method --- backend/models/form.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'backend/models') diff --git a/backend/models/form.py b/backend/models/form.py index 400f8ad..95bc50f 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -37,4 +37,18 @@ class Form(BaseModel): def dict(self, admin: bool = True, **kwargs: t.Dict) -> t.Dict[str, t.Any]: """Wrapper for original function to exclude private data for public access.""" data = super().dict(**kwargs) - return {field: data[field] for field in PUBLIC_FIELDS} if admin else data + + returned_data = {} + + if not admin: + for field in PUBLIC_FIELDS: + if field == "_id" and kwargs.get("by_alias"): + fetch_field = "_id" + else: + fetch_field = field + + returned_data[field] = data[fetch_field] + else: + returned_data = data + + return returned_data -- cgit v1.2.3 From 449f6737c1a755a105413013991e64a3b0db6912 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 13 Dec 2020 19:25:48 +0000 Subject: Fix dodgy indent and wrong field name --- backend/models/form.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'backend/models') diff --git a/backend/models/form.py b/backend/models/form.py index 95bc50f..0b436e4 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -42,12 +42,12 @@ class Form(BaseModel): if not admin: for field in PUBLIC_FIELDS: - if field == "_id" and kwargs.get("by_alias"): + if field == "id" and kwargs.get("by_alias"): fetch_field = "_id" else: fetch_field = field - returned_data[field] = data[fetch_field] + returned_data[field] = data[fetch_field] else: returned_data = data -- cgit v1.2.3 From 2386a994adc56f03e193c1cefd7f66330bc31501 Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 13 Dec 2020 19:27:05 +0000 Subject: Fix whitespace errors --- backend/models/form.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'backend/models') diff --git a/backend/models/form.py b/backend/models/form.py index 0b436e4..2cf8486 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -37,16 +37,16 @@ class Form(BaseModel): def dict(self, admin: bool = True, **kwargs: t.Dict) -> t.Dict[str, t.Any]: """Wrapper for original function to exclude private data for public access.""" data = super().dict(**kwargs) - + returned_data = {} - + if not admin: for field in PUBLIC_FIELDS: if field == "id" and kwargs.get("by_alias"): fetch_field = "_id" else: fetch_field = field - + returned_data[field] = data[fetch_field] else: returned_data = data -- cgit v1.2.3