from django.contrib import admin from django.urls import path, include from django.conf import settings from django.conf.urls.static import static from rest_framework import permissions from drf_yasg.views import get_schema_view from drf_yasg import openapi from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView, TokenVerifyView """ Вставки из апсов приложения Машиночитаемая [схема] описывает, какие ресурсы доступны через API """ schema_view = get_schema_view( openapi.Info( title="vikileo.shop API", default_version='v1', description="vikileo.shop API Documentation", ), public=True, permission_classes=(permissions.AllowAny,), ) """ Префикс для понтов, можно без него но сним проще ориентироваться что должно иди на фронт, а что для тестов. """ api_prefix = 'api' """ Кортежи адресов для системных приложений """ urlpatterns_system = [ path('admin/', admin.site.urls), # Адрес админ панели path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-redoc'), # API сборник адресов path('api-rest/', include('rest_framework.urls')), # API rest, допилить виюшку path(f'{api_prefix}/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), # Присвоение токена path(f'{api_prefix}/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), # Перевыдача токена path(f'{api_prefix}/token/verify/', TokenVerifyView.as_view(), name='token_verify'), # Верифекация токена ] """ Кортежи адресов для приложений """ urlpatterns_apps = [ path(f'{api_prefix}/', include('config.accounts.urls')), # Адрес управление учётными данными path(f'{api_prefix}/', include('system.comments.urls')), # Адрес комментариев от пользователей path('', include('main.urls')), # Адрес главной странице (заглушка) path('', include('config.accounts.urls')), # Адрес управление учётными данными ] """ Кортежи адресов для тестовых приложений """ urlpatterns_test = [ #path(f'{api_prefix}/', include('system.media.urls')), # Адрес файлаобменника #path(f'{api_prefix}/', include('todos.urls')), # Адрес задач админов #path(f'{api_prefix}/', include('articles.urls')), # Адрес стадей для пользователей #path(f'{api_prefix}/token/', obtain_token, name='token_obtain_pair'), #path(f'{api_prefix}/protected/', protected_view, name='protected_view'), ] """ Объединение кортежа адресов """ urlpatterns = urlpatterns_system + urlpatterns_apps + urlpatterns_test """ Обслуживание файлов, загруженных пользователем во время разработки """ if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)