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(+) 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