From d18b21a242f1154f900ac827a01300b99fc77717 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 29 Dec 2020 15:45:32 +0200 Subject: Add discord_role field to form and it's schema --- backend/models/form.py | 1 + 1 file changed, 1 insertion(+) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index 57372ea..64b198b 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -33,6 +33,7 @@ class Form(BaseModel): name: str description: str webhook: _WebHook = None + discord_role: t.Optional[str] class Config: allow_population_by_field_name = True -- cgit v1.2.3 From 085dc8c536a5968342d9632b3adb57ef4cd1d5bc Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 29 Dec 2020 18:54:25 +0200 Subject: Add validator for Discord role field for form --- backend/models/form.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index 64b198b..5aacc8b 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, validator +from pydantic import BaseModel, Field, root_validator, validator from pydantic.error_wrappers import ErrorWrapper, ValidationError from backend.constants import FormFeatures, WebHook @@ -52,6 +52,16 @@ class Form(BaseModel): return value + @root_validator + def validate_role(cls, values: dict[str, t.Any]) -> t.Optional[dict[str, t.Any]]: + """Validates does Discord role provided when flag provided.""" + if FormFeatures.ASSIGN_ROLE.value in values.get("features", []) and not values.get("discord_role"): # noqa + raise ValueError( + "discord_role field is required when ASSIGN_ROLE flag provided." + ) + + return values + def dict(self, admin: bool = True, **kwargs: t.Any) -> dict[str, t.Any]: """Wrapper for original function to exclude private data for public access.""" data = super().dict(**kwargs) -- cgit v1.2.3 From 0c110ab1dcde1916c870a6d1796bbff31606dd62 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 29 Dec 2020 19:27:18 +0200 Subject: Add check for REQUIRES_LOGIN when ASSIGN_ROLE provided --- backend/models/form.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index 5aacc8b..d95cabd 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -47,8 +47,12 @@ class Form(BaseModel): if any(v not in allowed_values for v in value): raise ValueError("Form features list contains one or more invalid values.") - if FormFeatures.COLLECT_EMAIL in value and FormFeatures.REQUIRES_LOGIN not in value: # noqa - raise ValueError("COLLECT_EMAIL feature require REQUIRES_LOGIN feature.") + if FormFeatures.REQUIRES_LOGIN not in value: + if FormFeatures.COLLECT_EMAIL in value: + raise ValueError("COLLECT_EMAIL feature require REQUIRES_LOGIN feature.") + + if FormFeatures.ASSIGN_ROLE in value: + raise ValueError("ASSIGN_ROLE feature require REQUIRES_LOGIN feature.") return value -- cgit v1.2.3 From 5b9f289cf415b2e60fa1550d5763367926b7bf6a Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 29 Dec 2020 19:33:37 +0200 Subject: Fix too long line --- backend/models/form.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index d95cabd..f006544 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -49,7 +49,9 @@ class Form(BaseModel): if FormFeatures.REQUIRES_LOGIN not in value: if FormFeatures.COLLECT_EMAIL in value: - raise ValueError("COLLECT_EMAIL feature require REQUIRES_LOGIN feature.") + raise ValueError( + "COLLECT_EMAIL feature require REQUIRES_LOGIN feature." + ) if FormFeatures.ASSIGN_ROLE in value: raise ValueError("ASSIGN_ROLE feature require REQUIRES_LOGIN feature.") -- cgit v1.2.3 From 7bb9f530242bba9bd3ee028f248511e63afcae0f Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 9 Mar 2021 08:43:57 +0200 Subject: Add missing "is" to error message Co-authored-by: Hassan Abouelela <47495861+HassanAbouelela@users.noreply.github.com> --- backend/models/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index 04b535f..7e1a673 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -64,7 +64,7 @@ class Form(BaseModel): """Validates does Discord role provided when flag provided.""" if FormFeatures.ASSIGN_ROLE.value in values.get("features", []) and not values.get("discord_role"): # noqa raise ValueError( - "discord_role field is required when ASSIGN_ROLE flag provided." + "discord_role field is required when ASSIGN_ROLE flag is provided." ) return values -- cgit v1.2.3 From a8bba220c26462dbc5c32171e769a267e7240583 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 16 Mar 2021 09:26:27 +0200 Subject: Add discord_role to public fields --- backend/models/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index 7e1a673..accd9b1 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -7,7 +7,7 @@ from pydantic.error_wrappers import ErrorWrapper, ValidationError from backend.constants import FormFeatures, WebHook from .question import Question -PUBLIC_FIELDS = ["id", "features", "questions", "name", "description", "submitted_text"] +PUBLIC_FIELDS = ["id", "features", "questions", "name", "description", "submitted_text", "discord_role"] class _WebHook(BaseModel): -- cgit v1.2.3 From ffee0e4702925ec91b9c411e18fdac24633302cc Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 16 Mar 2021 09:27:41 +0200 Subject: Use value of enum member instead of member itself --- backend/models/form.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index accd9b1..edeb936 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -48,13 +48,13 @@ class Form(BaseModel): if any(v not in allowed_values for v in value): raise ValueError("Form features list contains one or more invalid values.") - if FormFeatures.REQUIRES_LOGIN not in value: - if FormFeatures.COLLECT_EMAIL in value: + if FormFeatures.REQUIRES_LOGIN.value not in value: + if FormFeatures.COLLECT_EMAIL.value in value: raise ValueError( "COLLECT_EMAIL feature require REQUIRES_LOGIN feature." ) - if FormFeatures.ASSIGN_ROLE in value: + if FormFeatures.ASSIGN_ROLE.value in value: raise ValueError("ASSIGN_ROLE feature require REQUIRES_LOGIN feature.") return value -- cgit v1.2.3 From 8731e7dc3a0a25bdf8e66e00b74fb73460089250 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 16 Mar 2021 09:28:24 +0200 Subject: Split public fields constant to multiple lines --- backend/models/form.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index edeb936..8780aa7 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -7,7 +7,15 @@ from pydantic.error_wrappers import ErrorWrapper, ValidationError from backend.constants import FormFeatures, WebHook from .question import Question -PUBLIC_FIELDS = ["id", "features", "questions", "name", "description", "submitted_text", "discord_role"] +PUBLIC_FIELDS = [ + "id", + "features", + "questions", + "name", + "description", + "submitted_text", + "discord_role" +] class _WebHook(BaseModel): -- cgit v1.2.3 From 535ca293b9448006dce2bf92a202ce6679ece86b Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 16 Mar 2021 09:29:34 +0200 Subject: Split if statement to multiple lines to avoid noqa --- backend/models/form.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index 8780aa7..a6fe888 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -70,7 +70,10 @@ class Form(BaseModel): @root_validator def validate_role(cls, values: dict[str, t.Any]) -> t.Optional[dict[str, t.Any]]: """Validates does Discord role provided when flag provided.""" - if FormFeatures.ASSIGN_ROLE.value in values.get("features", []) and not values.get("discord_role"): # noqa + if ( + FormFeatures.ASSIGN_ROLE.value in values.get("features", []) + and not values.get("discord_role" + ): raise ValueError( "discord_role field is required when ASSIGN_ROLE flag is provided." ) -- cgit v1.2.3 From 0b0a18b68cec9ffd2e354d9f7c91eb5697c273bf Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Tue, 16 Mar 2021 09:31:51 +0200 Subject: Add back removed parenthesis --- backend/models/form.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backend/models/form.py') diff --git a/backend/models/form.py b/backend/models/form.py index a6fe888..30ae0e7 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -72,7 +72,7 @@ class Form(BaseModel): """Validates does Discord role provided when flag provided.""" if ( FormFeatures.ASSIGN_ROLE.value in values.get("features", []) - and not values.get("discord_role" + and not values.get("discord_role") ): raise ValueError( "discord_role field is required when ASSIGN_ROLE flag is provided." -- cgit v1.2.3