Procházet zdrojové kódy

poc of validate config (#24837)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
tags/1.8.1
Asuka Minato před 2 měsíci
rodič
revize
9f528d23d4
Žádný účet není propojen s e-mailovou adresou tvůrce revize
1 změnil soubory, kde provedl 19 přidání a 25 odebrání
  1. 19
    25
      api/core/app/app_config/features/more_like_this/manager.py

+ 19
- 25
api/core/app/app_config/features/more_like_this/manager.py Zobrazit soubor

from pydantic import BaseModel, Field, ValidationError


class MoreLikeThisConfig(BaseModel):
enabled: bool = False


class AppConfigModel(BaseModel):
more_like_this: MoreLikeThisConfig = Field(default_factory=MoreLikeThisConfig)


class MoreLikeThisConfigManager: class MoreLikeThisConfigManager:
@classmethod @classmethod
def convert(cls, config: dict) -> bool: def convert(cls, config: dict) -> bool:


:param config: model config args :param config: model config args
""" """
more_like_this = False
more_like_this_dict = config.get("more_like_this")
if more_like_this_dict:
if more_like_this_dict.get("enabled"):
more_like_this = True

return more_like_this
validated_config, _ = cls.validate_and_set_defaults(config)
return AppConfigModel.model_validate(validated_config).more_like_this.enabled


@classmethod @classmethod
def validate_and_set_defaults(cls, config: dict) -> tuple[dict, list[str]]: def validate_and_set_defaults(cls, config: dict) -> tuple[dict, list[str]]:
"""
Validate and set defaults for more like this feature

:param config: app model config args
"""
if not config.get("more_like_this"):
config["more_like_this"] = {"enabled": False}

if not isinstance(config["more_like_this"], dict):
raise ValueError("more_like_this must be of dict type")

if "enabled" not in config["more_like_this"] or not config["more_like_this"]["enabled"]:
config["more_like_this"]["enabled"] = False

if not isinstance(config["more_like_this"]["enabled"], bool):
raise ValueError("enabled in more_like_this must be of boolean type")

return config, ["more_like_this"]
try:
return AppConfigModel.model_validate(config).dict(), ["more_like_this"]
except ValidationError as e:
raise ValueError(
"more_like_this must be of dict type and enabled in more_like_this must be of boolean type"
)

Načítá se…
Zrušit
Uložit