Browse Source

hadis urls cached base on request's language

master
Mohsen Taba 5 months ago
parent
commit
cd0daaef07
  1. 70
      apps/hadis/urls.py
  2. 1
      apps/hadis/views/hadis.py

70
apps/hadis/urls.py

@ -4,45 +4,51 @@ from .views.hadis import HadisCollectionListView, HadisListView, HadisBasicView,
from .views.transmitter import TransmitterView ,TransmitterDetailView, TransmitterSyncView,TransmitterOpinionView, TransmitterOriginalTextView, TransmitterFiltersView
from .views.reference import BookDetailView, BookReferencesView, BookReferenceSyncView, BookAttributeView
from .views.info import HadisInfoView
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_headers
# Helper function to avoid ugly nesting
def cached_view(view_func):
return cache_page(60*60*2)(vary_on_headers('Accept-Language')(view_func))
urlpatterns = [
# Most specific first (with parameters)
path('collections/', HadisCollectionListView.as_view(), name='hadis-collection-list'),
path('sync/sects/', HadisCategorySectListView.as_view(), name='hadis-sect-list'),
path('sync/categories/tree/', HadisCategoryTreeView.as_view(), name='hadis-category-tree'),
path('sync/hadis/', HadisSyncView.as_view(), name='hadis-sync'),
path('sync/narrators/', TransmitterSyncView.as_view(), name='transmitter-sync'),
path('sync/references/', BookReferenceSyncView.as_view(), name='reference-sync'),
path('info/', HadisInfoView.as_view(), name='hadis-info'),
path('collections/', cached_view(HadisCollectionListView.as_view()), name='hadis-collection-list'),
path('sync/sects/', cached_view(HadisCategorySectListView.as_view()), name='hadis-sect-list'),
path('sync/categories/tree/', cached_view(HadisCategoryTreeView.as_view()), name='hadis-category-tree'),
path('sync/hadis/', cached_view(HadisSyncView.as_view()), name='hadis-sync'),
path('sync/narrators/', cached_view(TransmitterSyncView.as_view()), name='transmitter-sync'),
path('sync/references/', cached_view(BookReferenceSyncView.as_view()), name='reference-sync'),
path('info/', cached_view(HadisInfoView.as_view()), name='hadis-info'),
# Category paths (more specific first)
path('categories/tree/', HadisCategoryTreeNormalView.as_view(), name='hadis-category-tree-normal'),
path('categories/<str:sect_type>/<str:slug>/<str:source_type>/', HadisCategorySelectBySectSourceView.as_view(), name='categories-tree-by-sect-source'),
path('categories/<str:sect_type>/<str:slug>/', HadisCategorySelectBySectView.as_view(), name='categories-tree-by-sect'),
path('categories/<str:sect_type>/', CategoriesBySectView.as_view(), name='categories-by-sect'),
path('categories/', CategoriesView.as_view(), name='categories'), # ← Least specific LAST
path('categories/tree/', cached_view(HadisCategoryTreeNormalView.as_view()), name='hadis-category-tree-normal'),
path('categories/<str:sect_type>/<str:slug>/<str:source_type>/', cached_view(HadisCategorySelectBySectSourceView.as_view()), name='categories-tree-by-sect-source'),
path('categories/<str:sect_type>/<str:slug>/', cached_view(HadisCategorySelectBySectView.as_view()), name='categories-tree-by-sect'),
path('categories/<str:sect_type>/', cached_view(CategoriesBySectView.as_view()), name='categories-by-sect'),
path('categories/', cached_view(CategoriesView.as_view()), name='categories'), # ← Least specific LAST
# Hadis paths
path('category/<str:category_slug>/', HadisListView.as_view(), name='hadis-list'),
path('arguments/', HadisMainListView.as_view(), name='hadis-main-list'),
path('arguments/filters/', HadisFiltersView.as_view(), name='hadis-filters'),
path('category/<str:category_slug>/', cached_view(HadisListView.as_view()), name='hadis-list'),
path('arguments/', cached_view(HadisMainListView.as_view()), name='hadis-main-list'),
path('arguments/filters/', cached_view(HadisFiltersView.as_view()), name='hadis-filters'),
# Narrator paths
path('narrators/<str:narrator_slug>/opinions', TransmitterOpinionView.as_view(), name='narrator-opinions'),
path('narrators/<str:narrator_slug>/original_texts', TransmitterOriginalTextView.as_view(), name='narrator-original-texts'),
path('narrators/<str:narrator_slug>', TransmitterDetailView.as_view(), name='narrator-detail'),
path('narrators/filters/', TransmitterFiltersView.as_view(), name='narrator-filters'),
path('narrators/', TransmitterView.as_view(), name='narrators'),
path('narrators/<str:narrator_slug>/opinions', cached_view(TransmitterOpinionView.as_view()), name='narrator-opinions'),
path('narrators/<str:narrator_slug>/original_texts', cached_view(TransmitterOriginalTextView.as_view()), name='narrator-original-texts'),
path('narrators/<str:narrator_slug>', cached_view(TransmitterDetailView.as_view()), name='narrator-detail'),
path('narrators/filters/', cached_view(TransmitterFiltersView.as_view()), name='narrator-filters'),
path('narrators/', cached_view(TransmitterView.as_view()), name='narrators'),
# Reference paths
path('references/<str:reference_slug>', BookDetailView.as_view(), name='reference-detail'),
path('references/', BookReferencesView.as_view(), name='references'),
path('references/<str:reference_slug>', cached_view(BookDetailView.as_view()), name='reference-detail'),
path('references/', cached_view(BookReferencesView.as_view()), name='references'),
# Hadis detail paths (with slug, more specific)
path('<str:hadis_slug>/detail/', HadisDetailView.as_view(), name='hadis-detail'),
path('<str:hadis_slug>/transmitters/', HadisTransmittersView.as_view(), name='hadis-transmitters'),
path('<str:hadis_slug>/corrections/', HadisCorrectionsView.as_view(), name='hadis-corrections'),
path('<str:hadis_slug>/', HadisBasicView.as_view(), name='hadis-basic'), # ← Least specific LAST
path('<str:hadis_slug>/detail/', cached_view(HadisDetailView.as_view()), name='hadis-detail'),
path('<str:hadis_slug>/transmitters/', cached_view(HadisTransmittersView.as_view()), name='hadis-transmitters'),
path('<str:hadis_slug>/corrections/', cached_view(HadisCorrectionsView.as_view()), name='hadis-corrections'),
path('<str:hadis_slug>/', cached_view(HadisBasicView.as_view()), name='hadis-basic'), # ← Least specific LAST
]

1
apps/hadis/views/hadis.py

@ -116,7 +116,6 @@ class HadisMainListView(ListAPIView):
serializer_class = HadisListSerializer
pagination_class = PageNumberPagination
@hadis_main_list_swagger
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)

Loading…
Cancel
Save