Перенос служебных методов настроек
This commit is contained in:
@@ -8,5 +8,6 @@
|
||||
Пакет классов работы с параметрами конфигурации
|
||||
"""
|
||||
|
||||
from .config import Config
|
||||
from .environment import Environment
|
||||
from .setting_utils import SettingUtils
|
||||
|
||||
66
net/xeaf/rack/utils/settings/config.py
Normal file
66
net/xeaf/rack/utils/settings/config.py
Normal 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__}."
|
||||
)
|
||||
@@ -5,7 +5,7 @@
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Пакет классов логгера
|
||||
Пакет описания классов фильтрации логов
|
||||
"""
|
||||
|
||||
from .log_debug_filter import LogDebugFilter
|
||||
from .custom_logger_debug_filter import CustomLoggerDebugFilter
|
||||
@@ -5,13 +5,13 @@
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса LogDebugFilter
|
||||
Описание класса CustomLoggerDebugFilter
|
||||
"""
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
class LogDebugFilter:
|
||||
class CustomLoggerDebugFilter:
|
||||
"""
|
||||
Фильтр для разделения журнала DEBUG
|
||||
"""
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user