aboutsummaryrefslogtreecommitdiffstats
path: root/backend/models/form.py
diff options
context:
space:
mode:
authorGravatar Kieran Siek <[email protected]>2022-03-20 17:25:06 -0400
committerGravatar GitHub <[email protected]>2022-03-20 17:25:06 -0400
commit25fce5e0161c2d84d4a6b710aa5c83a863766f98 (patch)
treee3c15dad453f8d518bbf5335a14eddedf2c2d054 /backend/models/form.py
parentMerge pull request #151 from python-discord/dependabot/pip/sentry-sdk-1.5.7 (diff)
parentMerge 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.py13
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."""