Добавлено представление получения информации о версии проекта

This commit is contained in:
2026-07-18 12:55:47 +03:00
parent cc57591e66
commit f0a6e4d97d
10 changed files with 186 additions and 60 deletions

View File

@@ -10,9 +10,7 @@ trim_trailing_whitespace = true
[*.html]
max_line_length = 240
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = true

View File

@@ -11,7 +11,7 @@
## Таблица. Перечень сторонних библиотек и компонентов
| № п/п | Наименование компонента | Версия | Тип лицензии | Функциональное назначение компонента |
|---|---|---|---|---|
|------:|---------------------------------|-------------|---------------|------------------------------------------------------------|
| 1 | Django | 6.0.7 | BSD-3-Clause | Основной веб-фреймворк архитектуры ПО |
| 2 | djangorestframework | 3.17.1 | BSD-3-Clause | Построение REST API интерфейсов |
| 3 | asgiref | 3.11.1 | BSD License | Поддержка асинхронных интерфейсов веб-сервера |

View File

@@ -0,0 +1,9 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Пакет описания классов сериализаторов
"""

View File

@@ -0,0 +1,26 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса VersionInfoResponse
"""
from rest_framework import serializers
class VersionInfoResponse(serializers.Serializer):
"""
Формирует объект Информации о версии приложения
"""
title = serializers.CharField()
""" Наименование """
version = serializers.CharField()
""" Номер версии API """
debug_mode = serializers.BooleanField()
""" Признак режима отладки """

23
net/xeaf/rack/urls.py Normal file
View File

@@ -0,0 +1,23 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Модуль маршрутизации вызова представлений
"""
from net.xeaf.rack.views import VersionViewSet
p = VersionViewSet.get_paths()
#
# Маршруты
#
urlpatterns = [
*p,
# *VersionViewSet.get_paths(),
# Должен быть последним
# "*Error404ViewSet.get_path(),
]

View File

@@ -7,3 +7,5 @@
"""
Пакет описания классов представлений
"""
from .version_view_set import VersionViewSet

View File

@@ -0,0 +1,60 @@
# 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.version_info_response import VersionInfoResponse
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": "DRF Rack",
"debug_mode": True,
"version": "0.1.0",
"build": "20230701",
}
return version_info
@classmethod
def _process_pk_param(cls, **kwargs: Any) -> UUID | None:
"""
Обработка параметра идентификатора объекта
:param kwargs: Именованные параметры
:return: Идентификатор объекта или None
"""
return None

View File

@@ -12,6 +12,8 @@ https://docs.djangoproject.com/en/6.0/ref/settings/
from pathlib import Path
import sys
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
@@ -74,12 +76,21 @@ WSGI_APPLICATION = 'wsgiapp.wsgi.application'
# Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}
else:
# noinspection PyUnresolvedReferences
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': "/tmp/rack/rack.sqlite",
}
}
# Password validation

View File

@@ -1,22 +1,19 @@
"""
URL configuration for wsgiapp project.
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/6.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
Модуль маршрутизации
"""
from django.urls import include
from django.urls import path
#
# Маршруты
#
urlpatterns = [
path('admin/', admin.site.urls),
path('v1/', include('net.xeaf.rack.urls')),
]