61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
# DRF Rack
|
|
# Библиотека классов расширений для Django REST Framework
|
|
#
|
|
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
|
# Все права защищены. Лицензия: MIT
|
|
|
|
"""
|
|
Описание класса VersionViewSet
|
|
"""
|
|
|
|
from typing import Any
|
|
from uuid import UUID
|
|
|
|
from rest_framework.permissions import AllowAny
|
|
|
|
from net.xeaf.rack.core import CoreModel
|
|
from net.xeaf.rack.core.views import CoreViewSet
|
|
from net.xeaf.rack.core.views import ViewSetRetrieveMixin
|
|
from net.xeaf.rack.serializers import VersionInfoResponse
|
|
from net.xeaf.rack.utils.settings import SettingUtils
|
|
|
|
|
|
class VersionViewSet(ViewSetRetrieveMixin, CoreViewSet):
|
|
"""
|
|
Представление версии приложения
|
|
"""
|
|
|
|
permission_classes = [AllowAny, ]
|
|
""" Классы проверки прав доступа """
|
|
|
|
item_detail_pattern = ""
|
|
""" Путь для работы с объектом """
|
|
|
|
response_serializer = VersionInfoResponse
|
|
""" Общий класс сериализатора для ответа """
|
|
|
|
def _process_retrieve(self, pk: UUID | None, params: dict[str, Any]) -> dict[str, Any] | CoreModel:
|
|
"""
|
|
Обработка запроса на получение версии приложения
|
|
"""
|
|
|
|
version_info = {
|
|
"title": SettingUtils.get_app_name(),
|
|
"debug_mode": SettingUtils.is_debug_mode(),
|
|
"version": SettingUtils.get_app_version()
|
|
}
|
|
|
|
return version_info
|
|
|
|
@classmethod
|
|
def _process_pk_param(cls, **kwargs: Any) -> UUID | None:
|
|
"""
|
|
Обработка параметра идентификатора объекта
|
|
|
|
:param kwargs: Именованные параметры
|
|
|
|
:return: Идентификатор объекта или None
|
|
"""
|
|
|
|
return None
|