Добавлен класс CoreException
This commit is contained in:
@@ -9,4 +9,5 @@
|
||||
"""
|
||||
|
||||
from .core_enum import CoreEnum
|
||||
from .core_exception import CoreException
|
||||
from .core_test_case import CoreTestCase
|
||||
|
||||
59
net/xeaf/rack/core/core_exception.py
Normal file
59
net/xeaf/rack/core/core_exception.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса CoreException
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
class CoreException(Exception):
|
||||
"""
|
||||
Реализует базовый функционал всех классов исключений проекта
|
||||
"""
|
||||
|
||||
status_code: int
|
||||
""" Код состояния ответа API """
|
||||
|
||||
detail: str | dict | list | None = None
|
||||
""" Информация об ошибке """
|
||||
|
||||
meta: dict | None = None
|
||||
""" Информация для обработки ошибки """
|
||||
|
||||
def __init__(self, status_code: int, detail: str | dict | list | None = None, meta: dict | None = None, **kwargs: Any):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param status_code: Код состояния ответа API
|
||||
:param detail: Информация об ошибке
|
||||
:param meta: Информация для обработки ошибки
|
||||
:param kwargs: Дополнительные параметры
|
||||
"""
|
||||
|
||||
self.status_code = status_code
|
||||
self.detail = detail
|
||||
self._process_meta(meta, **kwargs)
|
||||
super().__init__()
|
||||
|
||||
def _process_meta(self, meta: dict | None, **kwargs: Any) -> None:
|
||||
"""
|
||||
Разбирает переданные параметры
|
||||
|
||||
:param meta: Метаданные
|
||||
:param kwargs: Дополнительные аргументы
|
||||
"""
|
||||
|
||||
# Метаданные
|
||||
if meta is not None:
|
||||
self.meta = meta
|
||||
elif kwargs:
|
||||
self.meta = {}
|
||||
|
||||
# Дополнительные параметры
|
||||
if kwargs and self.meta is not None:
|
||||
self.meta.update(kwargs)
|
||||
Reference in New Issue
Block a user