Добавлены классы ответов
This commit is contained in:
@@ -10,3 +10,4 @@
|
||||
|
||||
from .core_enum import CoreEnum
|
||||
from .core_exception import CoreException
|
||||
from .core_response import CoreResponse
|
||||
|
||||
51
net/xeaf/rack/core/core_response.py
Normal file
51
net/xeaf/rack/core/core_response.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса CoreResponse
|
||||
"""
|
||||
|
||||
from django.utils import timezone
|
||||
from rest_framework import status
|
||||
from rest_framework.response import Response
|
||||
|
||||
|
||||
class CoreResponse(Response):
|
||||
"""
|
||||
Базовый класс для всех классов ответов API проекта
|
||||
"""
|
||||
|
||||
def __init__(self, internal_status: int, external_status: int, data: list | dict | str | bool | None, meta: dict | None = None):
|
||||
"""
|
||||
Инициализация
|
||||
|
||||
:param internal_status: Внутренний код состояния
|
||||
:param external_status: Внешний код состояния
|
||||
:param data: Набор возвращаемых данных
|
||||
:param meta: Дополнительные данные
|
||||
"""
|
||||
|
||||
result: dict[str, list | dict | str | float | int | bool] = {
|
||||
"status": internal_status,
|
||||
"timestamp": timezone.now().timestamp()
|
||||
}
|
||||
|
||||
# Формируем данные ответа
|
||||
if data is not None:
|
||||
if internal_status < status.HTTP_400_BAD_REQUEST:
|
||||
result["data"] = data
|
||||
else:
|
||||
result["detail"] = data
|
||||
|
||||
# Набор дополнительных данных
|
||||
if meta:
|
||||
result["meta"] = meta
|
||||
|
||||
# Формируем ответ
|
||||
super().__init__(
|
||||
data=result,
|
||||
status=external_status
|
||||
)
|
||||
Reference in New Issue
Block a user