Files
drf-rack/net/xeaf/rack/models/responses/error_response.py

50 lines
1.4 KiB
Python

# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса ErrorResponse
"""
from rest_framework import status
from net.xeaf.rack.core import CoreResponse
class ErrorResponse(CoreResponse):
"""
Ответ с информацией об ошибке
"""
def __init__(self, status_code: int, detail: list | dict | str | bool | None, meta: dict | None = None):
"""
Инициализация
:param status_code: Код состояния
:param detail: Информация об ошибке
:param meta: Дополнительные данные
"""
super(ErrorResponse, self).__init__(
internal_status=status_code,
external_status=self._calc_external_status(status_code),
data=detail,
meta=meta)
@classmethod
def _calc_external_status(cls, status_code: int) -> int:
"""
Вычисляет значение внешнего возвращаемого статуса
:param status_code: Код состояния
:return: Внешний код состояния
"""
if status_code < status.HTTP_500_INTERNAL_SERVER_ERROR:
return status.HTTP_200_OK
return status_code