from django.urls import path, re_path, include from rest_framework.routers import SimpleRouter from utils.cache import smart_cached_view from .views import * from .views_admin import * # Helper function to cache public views with smart invalidation and force-refresh support cached_view = smart_cached_view(60 * 60 * 2, key_prefix='podcast_api') conditional_cached_view = smart_cached_view admin_router = SimpleRouter() admin_router.register(r'podcasts', AdminPodcastViewSet, basename='admin-podcast') admin_router.register(r'playlists', AdminPodcastPlaylistViewSet, basename='admin-podcast-playlist') admin_router.register(r'categories', AdminPodcastCategoryViewSet, basename='admin-podcast-category') admin_router.register(r'collections', AdminPodcastCollectionViewSet, basename='admin-podcast-collection') # Hide admin viewsets from swagger for prefix, viewset, basename in admin_router.registry: viewset.swagger_schema = None dovodi_router = SimpleRouter() dovodi_router.register(r'categories', DovodiPodcastCategoryViewSet, basename='dovodi-podcast-category') dovodi_router.register(r'collections', DovodiPodcastCollectionViewSet, basename='dovodi-podcast-collection') dovodi_router.register(r'items', DovodiPodcastItemViewSet, basename='dovodi-podcast-item') app_name = 'podcast' urlpatterns = [ path('admin/', include(admin_router.urls)), path('dovodi/', include(dovodi_router.urls)), path('categories/', cached_view(PodcastCategoryListAPIView.as_view()), name='category-list'), path('pinned-collections/', cached_view(PinnedPodcastCollectionListView.as_view()), name='pinned-collection-list'), path('collections/', cached_view(MiddlePodcastCollectionListView.as_view()), name='collection-list'), path('list/', conditional_cached_view(60 * 30, 'podcast_list')(PodcastListAPIView.as_view()), name='podcast-list'), re_path(r'detail/(?P[\w-]+)/$', PodcastDetailAPIView.as_view(), name='podcast-detail'), # User playlist endpoints path('user-playlist/', UserPlaylistCreateAPIView.as_view(), name='user-playlist-create'), path('user-playlist/list/', UserPlaylistListAPIView.as_view(), name='user-playlist-list'), ]