Инспекция кода
This commit is contained in:
@@ -37,7 +37,6 @@ KEYDB_DBINDEX=0
|
|||||||
KEYDB_PASSWORD='<change-me>'
|
KEYDB_PASSWORD='<change-me>'
|
||||||
KEYDB_POOL_SIZE=4
|
KEYDB_POOL_SIZE=4
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# S3 Object Storage
|
# S3 Object Storage
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ services:
|
|||||||
networks :
|
networks :
|
||||||
- rack-network
|
- rack-network
|
||||||
|
|
||||||
# 2. KeyDB (Сессии, Сокеты, Очереди, Кэш чанков)
|
# 2. KeyDB
|
||||||
keydb :
|
keydb :
|
||||||
image : eqalpha/keydb:latest
|
image : eqalpha/keydb:latest
|
||||||
container_name: rack_keydb
|
container_name: rack_keydb
|
||||||
|
|||||||
@@ -37,11 +37,11 @@ class ViewSetCreateMixin(CoreViewSet):
|
|||||||
create_response_serializer: Type[Serializer] | None = None
|
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 запрос и возвращает ответ с новым объектом
|
Обрабатывает HTTP запрос и возвращает ответ с новым объектом
|
||||||
|
|
||||||
:param request: Запрос
|
:param _request: Пропускаемый параметр запроса
|
||||||
:param kwargs: Именованные аргументы
|
:param kwargs: Именованные аргументы
|
||||||
|
|
||||||
:return: Ответ
|
:return: Ответ
|
||||||
|
|||||||
@@ -36,11 +36,11 @@ class ViewSetDestroyMixin(CoreViewSet):
|
|||||||
destroy_response_serializer: Type[Serializer] | None = None
|
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 запрос и возвращает ответ с объектом
|
Обрабатывает HTTP запрос и возвращает ответ с объектом
|
||||||
|
|
||||||
:param request: Запрос
|
:param _request: Пропускаемый параметр запроса
|
||||||
:param kwargs: Именованные аргументы
|
:param kwargs: Именованные аргументы
|
||||||
|
|
||||||
:return: Ответ
|
:return: Ответ
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ class ViewSetListMixin(CoreViewSet):
|
|||||||
list_response_serializer: Type[Serializer] | None = None
|
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 запрос и возвращает ответ со списком объектов
|
Обрабатывает HTTP запрос и возвращает ответ со списком объектов
|
||||||
|
|
||||||
:param request: Запрос
|
:param _request: Пропускаемый параметр запроса
|
||||||
:param kwargs: Именованные аргументы
|
:param kwargs: Именованные аргументы
|
||||||
|
|
||||||
:return: Ответ
|
:return: Ответ
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ class ViewSetRetrieveMixin(CoreViewSet):
|
|||||||
retrieve_response_serializer: Type[Serializer] | None = None
|
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 запрос и возвращает ответ с объектом
|
Обрабатывает HTTP запрос и возвращает ответ с объектом
|
||||||
|
|
||||||
:param request: Запрос
|
:param _request: Пропускаемый параметр запроса
|
||||||
:param kwargs: Именованные аргументы
|
:param kwargs: Именованные аргументы
|
||||||
|
|
||||||
:return: Ответ
|
:return: Ответ
|
||||||
|
|||||||
@@ -37,11 +37,11 @@ class ViewSetUpdateMixin(CoreViewSet):
|
|||||||
update_response_serializer: Type[Serializer] | None = None
|
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 запрос и возвращает ответ с объектом
|
Обрабатывает HTTP запрос и возвращает ответ с объектом
|
||||||
|
|
||||||
:param request: Запрос
|
:param _request: Пропускаемый параметр запроса
|
||||||
:param kwargs: Именованные аргументы
|
:param kwargs: Именованные аргументы
|
||||||
|
|
||||||
:return: Ответ
|
:return: Ответ
|
||||||
|
|||||||
@@ -7,3 +7,5 @@
|
|||||||
"""
|
"""
|
||||||
Пакет описания классов сериализаторов
|
Пакет описания классов сериализаторов
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from .version_info_response import VersionInfoResponse
|
||||||
|
|||||||
@@ -175,14 +175,20 @@ class SettingUtils:
|
|||||||
return data['project']['version']
|
return data['project']['version']
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_config_files(cls) -> list[str]:
|
def get_config_files(cls, extra: list[str] | None = None) -> list[str]:
|
||||||
"""
|
"""
|
||||||
Возвращает список файлов конфигурации
|
Возвращает список файлов конфигурации
|
||||||
|
|
||||||
|
:param extra: Дополнительные файлы конфигурации
|
||||||
|
|
||||||
:return: Список файлов конфигурации
|
: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
|
@classmethod
|
||||||
def set_config_file(cls, name: str, full_path: str | None) -> None:
|
def set_config_file(cls, name: str, full_path: str | None) -> None:
|
||||||
@@ -196,14 +202,16 @@ class SettingUtils:
|
|||||||
cls.__config_files[name] = full_path
|
cls.__config_files[name] = full_path
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_installed_apps(cls) -> list[str]:
|
def get_installed_apps(cls, extra: list[str] | None = None) -> list[str]:
|
||||||
"""
|
"""
|
||||||
Возвращает список установленных приложений
|
Возвращает список установленных приложений
|
||||||
|
|
||||||
|
:param extra: Дополнительные приложения
|
||||||
|
|
||||||
:return: Список установленных приложений
|
:return: Список установленных приложений
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return [
|
predefined_apps = [
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'django.contrib.admindocs',
|
'django.contrib.admindocs',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
@@ -216,6 +224,8 @@ class SettingUtils:
|
|||||||
'net.xeaf.rack',
|
'net.xeaf.rack',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
return predefined_apps + (extra if extra else [])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _check_initialization(cls) -> None:
|
def _check_initialization(cls) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ from rest_framework.permissions import AllowAny
|
|||||||
from net.xeaf.rack.core import CoreModel
|
from net.xeaf.rack.core import CoreModel
|
||||||
from net.xeaf.rack.core.views import CoreViewSet
|
from net.xeaf.rack.core.views import CoreViewSet
|
||||||
from net.xeaf.rack.core.views import ViewSetRetrieveMixin
|
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):
|
class VersionViewSet(ViewSetRetrieveMixin, CoreViewSet):
|
||||||
@@ -39,10 +40,9 @@ class VersionViewSet(ViewSetRetrieveMixin, CoreViewSet):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
version_info = {
|
version_info = {
|
||||||
"title": "DRF Rack",
|
"title": SettingUtils.get_app_name(),
|
||||||
"debug_mode": True,
|
"debug_mode": SettingUtils.is_debug_mode(),
|
||||||
"version": "0.1.0",
|
"version": SettingUtils.get_app_version()
|
||||||
"build": "20230701",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return version_info
|
return version_info
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
|
# DRF Rack
|
||||||
|
# Библиотека классов расширений для Django REST Framework
|
||||||
|
#
|
||||||
|
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||||
|
# Все права защищены. Лицензия: MIT
|
||||||
|
|
||||||
"""
|
"""
|
||||||
ASGI config for wsgiapp project.
|
Запуск приложения ASGI
|
||||||
|
|
||||||
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/
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -12,5 +13,4 @@ import os
|
|||||||
from django.core.asgi import get_asgi_application
|
from django.core.asgi import get_asgi_application
|
||||||
|
|
||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wsgiapp.settings')
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wsgiapp.settings')
|
||||||
|
|
||||||
application = get_asgi_application()
|
application = get_asgi_application()
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
|
# DRF Rack
|
||||||
|
# Библиотека классов расширений для Django REST Framework
|
||||||
|
#
|
||||||
|
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||||
|
# Все права защищены. Лицензия: MIT
|
||||||
|
|
||||||
"""
|
"""
|
||||||
WSGI config for wsgiapp project.
|
Запуск приложения WSGI
|
||||||
|
|
||||||
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/
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -12,5 +13,4 @@ import os
|
|||||||
from django.core.wsgi import get_wsgi_application
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|
||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wsgiapp.settings')
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'wsgiapp.settings')
|
||||||
|
|
||||||
application = get_wsgi_application()
|
application = get_wsgi_application()
|
||||||
|
|||||||
Reference in New Issue
Block a user