diff options
author | 2022-03-20 17:25:06 -0400 | |
---|---|---|
committer | 2022-03-20 17:25:06 -0400 | |
commit | 25fce5e0161c2d84d4a6b710aa5c83a863766f98 (patch) | |
tree | e3c15dad453f8d518bbf5335a14eddedf2c2d054 /backend/models/form.py | |
parent | Merge pull request #151 from python-discord/dependabot/pip/sentry-sdk-1.5.7 (diff) | |
parent | Merge branch 'main' into roles (diff) |
Merge pull request #135 from python-discord/roles
Overhaul Access System
Diffstat (limited to 'backend/models/form.py')
-rw-r--r-- | backend/models/form.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/backend/models/form.py b/backend/models/form.py index f19ed85..f888d6e 100644 --- a/backend/models/form.py +++ b/backend/models/form.py @@ -1,10 +1,10 @@ import typing as t import httpx -from pydantic import constr, BaseModel, Field, root_validator, validator +from pydantic import BaseModel, Field, constr, root_validator, validator from pydantic.error_wrappers import ErrorWrapper, ValidationError -from backend.constants import FormFeatures, WebHook +from backend.constants import DISCORD_GUILD, FormFeatures, WebHook from .question import Question PUBLIC_FIELDS = [ @@ -43,6 +43,8 @@ class Form(BaseModel): submitted_text: t.Optional[str] = None webhook: _WebHook = None discord_role: t.Optional[str] + response_readers: t.Optional[list[str]] + editors: t.Optional[list[str]] class Config: allow_population_by_field_name = True @@ -67,6 +69,13 @@ class Form(BaseModel): return value + @validator("response_readers", "editors") + def validate_role_scoping(cls, value: t.Optional[list[str]]) -> t.Optional[list[str]]: + """Ensure special role based permissions aren't granted to the @everyone role.""" + if value and str(DISCORD_GUILD) in value: + raise ValueError("You can not add the everyone role as an access scope.") + 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.""" |