Добавлены классы ответов

This commit is contained in:
2026-07-12 03:50:57 +03:00
parent b816a7766a
commit 164598294a
18 changed files with 702 additions and 0 deletions

View File

@@ -10,3 +10,4 @@
from .core_enum import CoreEnum
from .core_exception import CoreException
from .core_response import CoreResponse

View 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
)