mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
form: add reserved "id" validator
This commit is contained in:
parent
774b11cbbe
commit
bec34b92b0
2 changed files with 26 additions and 26 deletions
|
@ -455,31 +455,6 @@ class ConfigPanel:
|
|||
"config_unknown_filter_key", filter_key=self.filter_key
|
||||
)
|
||||
|
||||
# List forbidden keywords from helpers and sections toml (to avoid conflict)
|
||||
forbidden_keywords = [
|
||||
"old",
|
||||
"app",
|
||||
"changed",
|
||||
"file_hash",
|
||||
"binds",
|
||||
"types",
|
||||
"formats",
|
||||
"getter",
|
||||
"setter",
|
||||
"short_setting",
|
||||
"type",
|
||||
"bind",
|
||||
"nothing_changed",
|
||||
"changes_validated",
|
||||
"result",
|
||||
"max_progression",
|
||||
]
|
||||
forbidden_keywords += format_description["sections"]
|
||||
|
||||
for _, _, option in self._iterate():
|
||||
if option["id"] in forbidden_keywords:
|
||||
raise YunohostError("config_forbidden_keyword", keyword=option["id"])
|
||||
|
||||
return self.config
|
||||
|
||||
def _get_default_values(self):
|
||||
|
|
|
@ -265,7 +265,26 @@ FORBIDDEN_READONLY_TYPES = {
|
|||
OptionType.user,
|
||||
OptionType.group,
|
||||
}
|
||||
|
||||
FORBIDDEN_KEYWORDS = {
|
||||
"old",
|
||||
"app",
|
||||
"changed",
|
||||
"file_hash",
|
||||
"binds",
|
||||
"types",
|
||||
"formats",
|
||||
"getter",
|
||||
"setter",
|
||||
"short_setting",
|
||||
"type",
|
||||
"bind",
|
||||
"nothing_changed",
|
||||
"changes_validated",
|
||||
"result",
|
||||
"max_progression",
|
||||
"properties",
|
||||
"defaults",
|
||||
}
|
||||
|
||||
Context = dict[str, Any]
|
||||
Translation = Union[dict[str, str], str]
|
||||
|
@ -298,6 +317,12 @@ class BaseOption(BaseModel):
|
|||
del schema["description"]
|
||||
schema["additionalProperties"] = False
|
||||
|
||||
@validator("id", pre=True)
|
||||
def check_id_is_not_forbidden(cls, value: str) -> str:
|
||||
if value in FORBIDDEN_KEYWORDS:
|
||||
raise ValueError(m18n.n("config_forbidden_keyword", keyword=value))
|
||||
return value
|
||||
|
||||
# FIXME Legacy, is `name` still needed?
|
||||
@validator("name", pre=True, always=True)
|
||||
def apply_legacy_name(cls, value: Union[str, None], values: Values) -> str:
|
||||
|
|
Loading…
Add table
Reference in a new issue