""" URL configuration for Admin Subdomain (admin.imamjavad.nwhco.ir) This handles all admin-related URLs and Swagger/Redoc when accessed via the admin subdomain. """ from django.urls import path, include, re_path from django.conf import settings from django.conf.urls.static import static from django.conf.urls.i18n import i18n_patterns from drf_yasg.views import get_schema_view from drf_yasg import openapi from utils.admin import project_admin_site, dovoodi_admin_site, HomeView from apps.api.views import CustomAPIDocumentationView, CustomSwaggerView, SwaggerTokenAuthView, clear_swagger_auth from apps.api.permissions import IsAdminOrSwaggerToken from apps.api.decorators import swagger_auth_required # Schema view for documentation schema_view = get_schema_view( openapi.Info( title="Imam Javad API", default_version='v1', description="Comprehensive API documentation for the Imam Javad educational platform", contact=openapi.Contact(email="contact@imamjavad.com"), license=openapi.License(name="MIT License"), ), public=False, permission_classes=(IsAdminOrSwaggerToken,), ) # Swagger URL patterns swagger_urlpatterns = [ path('swagger-auth/', SwaggerTokenAuthView.as_view(), name='swagger-token-auth'), path('swagger-auth/clear/', clear_swagger_auth, name='clear-swagger-auth'), re_path(r'^swagger(?P\.json|\.yaml)$', swagger_auth_required(schema_view.without_ui(cache_timeout=0)), name='schema-json'), path('swagger/', CustomSwaggerView.as_view(), name='schema-swagger-ui'), re_path(r'^redoc/$', swagger_auth_required(schema_view.with_ui('redoc', cache_timeout=0)), name='schema-redoc'), ] urlpatterns = [ # Root redirect to admin path("", HomeView.as_view(), name="home"), path("i18n/", include("django.conf.urls.i18n")), path('filer/', include('filer.urls')), ] # i18n admin + swagger patterns urlpatterns += i18n_patterns( path("imam-javad/admin/", project_admin_site.urls), path("dovoodi/admin/", dovoodi_admin_site.urls), path('docs/', CustomAPIDocumentationView.as_view(), name='docs-index'), *swagger_urlpatterns, path('filer/', include('filer.urls')), ) if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)