Update system_settings_service.py

This commit is contained in:
Egor
2025-11-06 02:23:32 +03:00
committed by GitHub
parent 95163a0e35
commit 0a8af20b58
+7 -31
View File
@@ -641,7 +641,8 @@ class BotConfigurationService:
@classmethod
def _is_env_override(cls, key: str) -> bool:
return key in cls._env_override_keys
# Отключаем приоритет env над БД - теперь БД имеет приоритет
return False
@classmethod
def _format_numeric_with_unit(cls, key: str, value: Union[int, float]) -> Optional[str]:
@@ -756,7 +757,7 @@ class BotConfigurationService:
_definitions: Dict[str, SettingDefinition] = {}
_original_values: Dict[str, Any] = settings.model_dump()
_overrides_raw: Dict[str, Optional[str]] = {}
_env_override_keys: set[str] = set(ENV_OVERRIDE_KEYS)
_env_override_keys: set[str] = set() # Отключаем приоритет env над БД - теперь БД имеет приоритет
_callback_tokens: Dict[str, str] = {}
_token_to_key: Dict[str, str] = {}
_choice_tokens: Dict[str, Dict[Any, str]] = {}
@@ -1177,12 +1178,6 @@ class BotConfigurationService:
overrides[row.key] = row.value
for key, raw_value in overrides.items():
if cls._is_env_override(key):
logger.debug(
"Пропускаем настройку %s из БД: используется значение из окружения",
key,
)
continue
try:
parsed_value = cls.deserialize_value(key, raw_value)
except Exception as error:
@@ -1302,15 +1297,8 @@ class BotConfigurationService:
raw_value = cls.serialize_value(key, value)
await upsert_system_setting(db, key, raw_value)
if cls._is_env_override(key):
logger.info(
"Настройка %s сохранена в БД, но не применена: значение задаётся через окружение",
key,
)
cls._overrides_raw.pop(key, None)
else:
cls._overrides_raw[key] = raw_value
cls._apply_to_settings(key, value)
cls._overrides_raw[key] = raw_value
cls._apply_to_settings(key, value)
if key in {"WEB_API_DEFAULT_TOKEN", "WEB_API_DEFAULT_TOKEN_NAME"}:
await cls._sync_default_web_api_token()
@@ -1328,26 +1316,14 @@ class BotConfigurationService:
await delete_system_setting(db, key)
cls._overrides_raw.pop(key, None)
if cls._is_env_override(key):
logger.info(
"Настройка %s сброшена в БД, используется значение из окружения",
key,
)
else:
original = cls.get_original_value(key)
cls._apply_to_settings(key, original)
original = cls.get_original_value(key)
cls._apply_to_settings(key, original)
if key in {"WEB_API_DEFAULT_TOKEN", "WEB_API_DEFAULT_TOKEN_NAME"}:
await cls._sync_default_web_api_token()
@classmethod
def _apply_to_settings(cls, key: str, value: Any) -> None:
if cls._is_env_override(key):
logger.debug(
"Пропуск применения настройки %s: значение задано через окружение",
key,
)
return
try:
setattr(settings, key, value)
if key in {