Инспекция кода

This commit is contained in:
2026-07-18 21:12:33 +03:00
parent a5a29b03b6
commit 02087aa80a
12 changed files with 51 additions and 40 deletions

View File

@@ -37,7 +37,6 @@ KEYDB_DBINDEX=0
KEYDB_PASSWORD='<change-me>'
KEYDB_POOL_SIZE=4
#
# S3 Object Storage
#

View File

@@ -21,7 +21,7 @@ services:
networks :
- rack-network
# 2. KeyDB (Сессии, Сокеты, Очереди, Кэш чанков)
# 2. KeyDB
keydb :
image : eqalpha/keydb:latest
container_name: rack_keydb
@@ -53,7 +53,7 @@ services:
- minio_data:/data
command : server /data --console-address ":9001"
healthcheck :
healthcheck :
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 10s
timeout: 5s
@@ -63,25 +63,25 @@ services:
networks :
- rack-network
# 4. Авто-создатель бакетов
# 4. Авто-создатель бакетов
minio-init:
image : minio/mc:latest
container_name: rack_minio_mc
depends_on :
minio:
condition: service_healthy
condition: service_healthy
env_file :
- .env
entrypoint : >
/bin/sh -c "
echo 'Настройка подключения к MinIO...';
/usr/bin/mc alias set local http://minio:9000 ${rack_S3_ACCESS_KEY} ${rack_S3_SECRET_KEY};
echo 'Ожидание готовности сервера...';
while ! /usr/bin/mc ping local --count 1 > /dev/null 2>&1; do
sleep 1;
done;
echo 'Сервер готов. Создание бакетов...';
/usr/bin/mc mb local/${rack_S3_BUCKET_PREFIX}-avatar --ignore-existing || true;
/usr/bin/mc mb local/${rack_S3_BUCKET_PREFIX}-media --ignore-existing || true;

View File

@@ -37,11 +37,11 @@ class ViewSetCreateMixin(CoreViewSet):
create_response_serializer: Type[Serializer] | None = None
""" Класс сериализатора для ответа на запрос о создании объекта """
def item_create(self, request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
def item_create(self, _request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
"""
Обрабатывает HTTP запрос и возвращает ответ с новым объектом
:param request: Запрос
:param _request: Пропускаемый параметр запроса
:param kwargs: Именованные аргументы
:return: Ответ

View File

@@ -36,11 +36,11 @@ class ViewSetDestroyMixin(CoreViewSet):
destroy_response_serializer: Type[Serializer] | None = None
""" Класс сериализатора для ответа на запрос объекта """
def item_destroy(self, request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
def item_destroy(self, _request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
"""
Обрабатывает HTTP запрос и возвращает ответ с объектом
:param request: Запрос
:param _request: Пропускаемый параметр запроса
:param kwargs: Именованные аргументы
:return: Ответ

View File

@@ -33,11 +33,11 @@ class ViewSetListMixin(CoreViewSet):
list_response_serializer: Type[Serializer] | None = None
""" Класс сериализатора для ответа на запрос списка объектов """
def item_list(self, request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
def item_list(self, _request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
"""
Обрабатывает HTTP запрос и возвращает ответ со списком объектов
:param request: Запрос
:param _request: Пропускаемый параметр запроса
:param kwargs: Именованные аргументы
:return: Ответ

View File

@@ -34,11 +34,11 @@ class ViewSetRetrieveMixin(CoreViewSet):
retrieve_response_serializer: Type[Serializer] | None = None
""" Класс сериализатора для ответа на запрос объекта """
def item_retrieve(self, request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
def item_retrieve(self, _request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
"""
Обрабатывает HTTP запрос и возвращает ответ с объектом
:param request: Запрос
:param _request: Пропускаемый параметр запроса
:param kwargs: Именованные аргументы
:return: Ответ

View File

@@ -37,11 +37,11 @@ class ViewSetUpdateMixin(CoreViewSet):
update_response_serializer: Type[Serializer] | None = None
""" Класс сериализатора для ответа на запрос на изменение объекта """
def item_update(self, request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
def item_update(self, _request: Request, **kwargs: dict[str, Any]) -> CoreResponse:
"""
Обрабатывает HTTP запрос и возвращает ответ с объектом
:param request: Запрос
:param _request: Пропускаемый параметр запроса
:param kwargs: Именованные аргументы
:return: Ответ

View File

@@ -7,3 +7,5 @@
"""
Пакет описания классов сериализаторов
"""
from .version_info_response import VersionInfoResponse

View File

@@ -175,14 +175,20 @@ class SettingUtils:
return data['project']['version']
@classmethod
def get_config_files(cls) -> list[str]:
def get_config_files(cls, extra: list[str] | None = None) -> list[str]:
"""
Возвращает список файлов конфигурации
:param extra: Дополнительные файлы конфигурации
:return: Список файлов конфигурации
"""
return [file for file in cls.__config_files.values() if file is not None]
predefined_configs = [
file for file in cls.__config_files.values() if file is not None
]
return predefined_configs + (extra if extra else [])
@classmethod
def set_config_file(cls, name: str, full_path: str | None) -> None:
@@ -196,14 +202,16 @@ class SettingUtils:
cls.__config_files[name] = full_path
@classmethod
def get_installed_apps(cls) -> list[str]:
def get_installed_apps(cls, extra: list[str] | None = None) -> list[str]:
"""
Возвращает список установленных приложений
:param extra: Дополнительные приложения
:return: Список установленных приложений
"""
return [
predefined_apps = [
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.auth',
@@ -216,6 +224,8 @@ class SettingUtils:
'net.xeaf.rack',
]
return predefined_apps + (extra if extra else [])
@classmethod
def _check_initialization(cls) -> None:
"""

View File

@@ -16,7 +16,8 @@ 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
from net.xeaf.rack.serializers import VersionInfoResponse
from net.xeaf.rack.utils.settings import SettingUtils
class VersionViewSet(ViewSetRetrieveMixin, CoreViewSet):
@@ -39,10 +40,9 @@ class VersionViewSet(ViewSetRetrieveMixin, CoreViewSet):
"""
version_info = {
"title": "DRF Rack",
"debug_mode": True,
"version": "0.1.0",
"build": "20230701",
"title": SettingUtils.get_app_name(),
"debug_mode": SettingUtils.is_debug_mode(),
"version": SettingUtils.get_app_version()
}
return version_info

View File

@@ -1,10 +1,11 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
ASGI config for wsgiapp project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/
Запуск приложения ASGI
"""
import os
@@ -12,5 +13,4 @@ import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wsgiapp.settings')
application = get_asgi_application()

View File

@@ -1,10 +1,11 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
WSGI config for wsgiapp project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/6.0/howto/deployment/wsgi/
Запуск приложения WSGI
"""
import os
@@ -12,5 +13,4 @@ import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wsgiapp.settings')
application = get_wsgi_application()