Реализована проверка версионности и требование soft\force обновлений приложения
This commit is contained in:
@@ -11,6 +11,12 @@ from sqlalchemy.dialects.postgresql import insert
|
||||
|
||||
from app.chat_settings import CHAT_MESSAGE_MAX_LENGTH_KEY, validate_chat_settings
|
||||
from app.db import AppSetting, Database
|
||||
from app.mobile_update_settings import (
|
||||
MOBILE_UPDATE_BOOLEAN_KEYS,
|
||||
MOBILE_UPDATE_INTEGER_KEYS,
|
||||
MOBILE_UPDATE_SETTING_KEYS,
|
||||
validate_mobile_update_settings,
|
||||
)
|
||||
from app.otp_settings import OTP_SETTING_KEYS, validate_otp_settings
|
||||
from app.settings import get_settings
|
||||
|
||||
@@ -38,12 +44,25 @@ def load_seed(path: Path) -> list[dict[str, Any]]:
|
||||
raise ValueError(f"{key}: type must be integer")
|
||||
if key == CHAT_MESSAGE_MAX_LENGTH_KEY and value_type != "integer":
|
||||
raise ValueError(f"{key}: type must be integer")
|
||||
if key in MOBILE_UPDATE_BOOLEAN_KEYS and value_type != "boolean":
|
||||
raise ValueError(f"{key}: type must be boolean")
|
||||
if key in MOBILE_UPDATE_INTEGER_KEYS and value_type != "integer":
|
||||
raise ValueError(f"{key}: type must be integer")
|
||||
if (
|
||||
key in MOBILE_UPDATE_SETTING_KEYS
|
||||
- MOBILE_UPDATE_BOOLEAN_KEYS
|
||||
- MOBILE_UPDATE_INTEGER_KEYS
|
||||
and value_type != "string"
|
||||
):
|
||||
raise ValueError(f"{key}: type must be string")
|
||||
if not isinstance(raw.get("public"), bool):
|
||||
raise ValueError(f"{key}: public must be a boolean")
|
||||
if key in OTP_SETTING_KEYS and raw["public"]:
|
||||
raise ValueError(f"{key}: OTP setting must not be public")
|
||||
if key == CHAT_MESSAGE_MAX_LENGTH_KEY and not raw["public"]:
|
||||
raise ValueError(f"{key}: setting must be public")
|
||||
if key in MOBILE_UPDATE_SETTING_KEYS and not raw["public"]:
|
||||
raise ValueError(f"{key}: mobile update setting must be public")
|
||||
description = raw.get("description")
|
||||
if description is not None and not isinstance(description, str):
|
||||
raise ValueError(f"{key}: description must be a string")
|
||||
@@ -59,6 +78,9 @@ def load_seed(path: Path) -> list[dict[str, Any]]:
|
||||
)
|
||||
validate_otp_settings({row["setting_key"]: row["setting_value"] for row in rows})
|
||||
validate_chat_settings({row["setting_key"]: row["setting_value"] for row in rows})
|
||||
validate_mobile_update_settings(
|
||||
{row["setting_key"]: row["setting_value"] for row in rows}
|
||||
)
|
||||
return rows
|
||||
|
||||
|
||||
@@ -68,6 +90,8 @@ def serialize_value(key: str, value_type: str, value: Any) -> str:
|
||||
raise ValueError(f"{key}: boolean value expected")
|
||||
return str(value).lower()
|
||||
if value_type == "integer":
|
||||
if key in MOBILE_UPDATE_INTEGER_KEYS and value is None:
|
||||
return ""
|
||||
if not isinstance(value, int) or isinstance(value, bool):
|
||||
raise ValueError(f"{key}: integer value expected")
|
||||
return str(value)
|
||||
|
||||
Reference in New Issue
Block a user