Добавлены классы стандартных исключений
This commit is contained in:
16
net/xeaf/rack/utils/exceptions/__init__.py
Normal file
16
net/xeaf/rack/utils/exceptions/__init__.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Пакет классов исключений
|
||||
"""
|
||||
|
||||
from .bad_request_exception import BadRequestException
|
||||
from .critical_exception import CriticalException
|
||||
from .file_not_found_exception import FileNotFoundException
|
||||
from .forbidden_exception import ForbiddenException
|
||||
from .not_found_exception import NotFoundException
|
||||
from .unauthorized_exception import UnauthorizedException
|
||||
45
net/xeaf/rack/utils/exceptions/bad_request_exception.py
Normal file
45
net/xeaf/rack/utils/exceptions/bad_request_exception.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса BadRequestException
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import status
|
||||
|
||||
from net.xeaf.rack.core import CoreException
|
||||
|
||||
|
||||
class BadRequestException(CoreException):
|
||||
"""
|
||||
Исключение, возникающее при ошибке в запросе
|
||||
"""
|
||||
|
||||
def __init__(self, detail: list | dict | str | None = None, meta: dict | None = None, **kwargs: Any):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param detail: Информация об ошибке
|
||||
:param meta: Информация для обработки ошибки
|
||||
:param kwargs: Дополнительные параметры
|
||||
"""
|
||||
|
||||
# Сообщение об ошибке по умолчанию
|
||||
if detail is None:
|
||||
detail = _(self.Msg.DEFAULT_MESSAGE)
|
||||
|
||||
super().__init__(status.HTTP_400_BAD_REQUEST, detail, meta, **kwargs)
|
||||
|
||||
class Msg:
|
||||
"""
|
||||
Константы сообщений
|
||||
"""
|
||||
|
||||
DEFAULT_MESSAGE = _("rack.errors.http.bad_request")
|
||||
""" Некорректный запрос """
|
||||
54
net/xeaf/rack/utils/exceptions/critical_exception.py
Normal file
54
net/xeaf/rack/utils/exceptions/critical_exception.py
Normal file
@@ -0,0 +1,54 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса CriticalException
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import status
|
||||
|
||||
from net.xeaf.rack.core import CoreException
|
||||
|
||||
|
||||
class CriticalException(CoreException):
|
||||
"""
|
||||
Исключение, возникающее при внутренней ошибке сервера
|
||||
"""
|
||||
|
||||
def __init__(self, detail: list | str | None = None, meta: dict | None = None, **kwargs: Any):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param detail: Информация об ошибке
|
||||
:param meta: Информация для обработки ошибки
|
||||
:param kwargs: Дополнительные параметры
|
||||
"""
|
||||
|
||||
# Сообщение об ошибке по умолчанию
|
||||
if detail is None:
|
||||
detail = _(self.Msg.DEFAULT_MESSAGE)
|
||||
|
||||
super().__init__(status.HTTP_500_INTERNAL_SERVER_ERROR, detail, meta, **kwargs)
|
||||
|
||||
def is_pure_status(self) -> bool:
|
||||
"""
|
||||
Возвращает признак необходимости возвращать в ответе реальный статус HTTP
|
||||
|
||||
:return: Признак необходимости
|
||||
"""
|
||||
|
||||
return True
|
||||
|
||||
class Msg:
|
||||
"""
|
||||
Константы сообщений
|
||||
"""
|
||||
|
||||
DEFAULT_MESSAGE = _("rack.errors.http.internal_server_error")
|
||||
""" Внутренняя ошибка сервера """
|
||||
26
net/xeaf/rack/utils/exceptions/file_not_found_exception.py
Normal file
26
net/xeaf/rack/utils/exceptions/file_not_found_exception.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса FileNotFoundException
|
||||
"""
|
||||
|
||||
from .not_found_exception import NotFoundException
|
||||
|
||||
|
||||
class FileNotFoundException(NotFoundException):
|
||||
"""
|
||||
Исключение, возникающее при невозможности найти запрашиваемый файл
|
||||
"""
|
||||
|
||||
def is_pure_status(self) -> bool:
|
||||
"""
|
||||
Возвращает признак необходимости возвращать в ответе реальный статус HTTP
|
||||
|
||||
:return: Признак необходимости
|
||||
"""
|
||||
|
||||
return True
|
||||
45
net/xeaf/rack/utils/exceptions/forbidden_exception.py
Normal file
45
net/xeaf/rack/utils/exceptions/forbidden_exception.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса ForbiddenException
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import status
|
||||
|
||||
from net.xeaf.rack.core import CoreException
|
||||
|
||||
|
||||
class ForbiddenException(CoreException):
|
||||
"""
|
||||
Исключение, возникающее при нарушении прав доступа
|
||||
"""
|
||||
|
||||
def __init__(self, detail: list | str | None = None, meta: dict | None = None, **kwargs: Any):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param detail: Информация об ошибке
|
||||
:param meta: Информация для обработки ошибки
|
||||
:param kwargs: Дополнительные параметры
|
||||
"""
|
||||
|
||||
# Сообщение об ошибке по умолчанию
|
||||
if detail is None:
|
||||
detail = _(self.Msg.DEFAULT_MESSAGE)
|
||||
|
||||
super().__init__(status.HTTP_403_FORBIDDEN, detail, meta, **kwargs)
|
||||
|
||||
class Msg:
|
||||
"""
|
||||
Константы сообщений
|
||||
"""
|
||||
|
||||
DEFAULT_MESSAGE = _("rack.errors.http.forbidden")
|
||||
""" Доступ запрещен """
|
||||
45
net/xeaf/rack/utils/exceptions/not_found_exception.py
Normal file
45
net/xeaf/rack/utils/exceptions/not_found_exception.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса NotFoundException
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import status
|
||||
|
||||
from net.xeaf.rack.core import CoreException
|
||||
|
||||
|
||||
class NotFoundException(CoreException):
|
||||
"""
|
||||
Исключение, возникающее при невозможности найти запрашиваемый объект
|
||||
"""
|
||||
|
||||
def __init__(self, detail: list | str | None = None, meta: dict | None = None, **kwargs: Any):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param detail: Информация об ошибке
|
||||
:param meta: Информация для обработки ошибки
|
||||
:param kwargs: Дополнительные параметры
|
||||
"""
|
||||
|
||||
# Сообщение об ошибке по умолчанию
|
||||
if detail is None:
|
||||
detail = _(self.Msg.DEFAULT_MESSAGE)
|
||||
|
||||
super().__init__(status.HTTP_404_NOT_FOUND, detail, meta, **kwargs)
|
||||
|
||||
class Msg:
|
||||
"""
|
||||
Константы сообщений
|
||||
"""
|
||||
|
||||
DEFAULT_MESSAGE = _("rack.errors.http.not_found")
|
||||
""" Объект не найден """
|
||||
45
net/xeaf/rack/utils/exceptions/unauthorized_exception.py
Normal file
45
net/xeaf/rack/utils/exceptions/unauthorized_exception.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса UnauthorizedException
|
||||
"""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from django.utils.translation import gettext as _
|
||||
from rest_framework import status
|
||||
|
||||
from net.xeaf.rack.core import CoreException
|
||||
|
||||
|
||||
class UnauthorizedException(CoreException):
|
||||
"""
|
||||
Исключение, возникающее при ошибке авторизации
|
||||
"""
|
||||
|
||||
def __init__(self, detail: list | str | None = None, meta: dict | None = None, **kwargs: Any):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param detail: Информация об ошибке
|
||||
:param meta: Информация для обработки ошибки
|
||||
:param kwargs: Дополнительные параметры
|
||||
"""
|
||||
|
||||
# Сообщение об ошибке по умолчанию
|
||||
if detail is None:
|
||||
detail = _(self.Msg.DEFAULT_MESSAGE)
|
||||
|
||||
super().__init__(status.HTTP_401_UNAUTHORIZED, detail, meta, **kwargs)
|
||||
|
||||
class Msg:
|
||||
"""
|
||||
Константы сообщений
|
||||
"""
|
||||
|
||||
DEFAULT_MESSAGE = _("rack.errors.http.unauthorized")
|
||||
""" Учетные данные не были предоставлены """
|
||||
Reference in New Issue
Block a user