Перенос служебных методов настроек

This commit is contained in:
2026-07-19 20:45:46 +03:00
parent da3f3aa703
commit 9e71bb6e29
7 changed files with 14 additions and 14 deletions

View File

@@ -8,5 +8,6 @@
Пакет классов работы с параметрами конфигурации
"""
from .config import Config
from .environment import Environment
from .setting_utils import SettingUtils

View File

@@ -0,0 +1,66 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса Config
"""
from typing import Any
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
class Config:
"""
Реализует методы для безопасного извлечения настроек из django.conf.settings
"""
@classmethod
def get_str(cls, key: str, default: str) -> str:
"""
Извлекает строковое значение, параметр default обязателен
"""
value = getattr(settings, key, default)
cls._assert_type(key, value, str)
return value
@classmethod
def get_int(cls, key: str, default: int) -> int:
"""
Извлекает целочисленное значение, параметр default обязателен
"""
value = getattr(settings, key, default)
cls._assert_type(key, value, int)
return value
@classmethod
def get_bool(cls, key: str, default: bool) -> bool:
"""
Извлекает логическое значение, параметр default обязателен.
"""
value = getattr(settings, key, default)
cls._assert_type(key, value, bool)
return value
@classmethod
def _assert_type(cls, key: str, value: Any, expected_type: type) -> None:
"""
Проверяет типы, защищая от bool/int полиморфизма
"""
if expected_type is int and isinstance(value, bool):
actual_type = bool
else:
actual_type = type(value)
if actual_type is not expected_type:
raise ImproperlyConfigured(
f"Configuration error: '{key}' must be of type {expected_type.__name__}, got {actual_type.__name__}."
)

View File

@@ -5,7 +5,7 @@
# Все права защищены. Лицензия: MIT
"""
Пакет классов логгера
Пакет описания классов фильтрации логов
"""
from .log_debug_filter import LogDebugFilter
from .custom_logger_debug_filter import CustomLoggerDebugFilter

View File

@@ -5,13 +5,13 @@
# Все права защищены. Лицензия: MIT
"""
Описание класса LogDebugFilter
Описание класса CustomLoggerDebugFilter
"""
from django.conf import settings
class LogDebugFilter:
class CustomLoggerDebugFilter:
"""
Фильтр для разделения журнала DEBUG
"""

View File

@@ -10,7 +10,7 @@
from net.xeaf.rack.utils.settings import Environment
from net.xeaf.rack.utils.settings import SettingUtils
from net.xeaf.rack.utils.settings.logger import LogDebugFilter
from net.xeaf.rack.utils.settings.configs.filter import CustomLoggerDebugFilter
#
# Имя журнала
@@ -47,7 +47,7 @@ LOGGING = {
"filters": {
"strict_debug_only": {
"()": LogDebugFilter,
"()": CustomLoggerDebugFilter,
},
},