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.transmitter import TransmitterView ,TransmitterDetailView, TransmitterSyncView,TransmitterOpinionView, TransmitterOriginalTextView, TransmitterFiltersView
from .views.reference import BookDetailView, BookReferencesView, BookReferenceSyncView, BookAttributeView from .views.reference import BookDetailView, BookReferencesView, BookReferenceSyncView, BookAttributeView
from .views.info import HadisInfoView 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 = [ urlpatterns = [
# Most specific first (with parameters) # 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) # 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 # 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 # 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 # 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) # 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 serializer_class = HadisListSerializer
pagination_class = PageNumberPagination pagination_class = PageNumberPagination
@hadis_main_list_swagger
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs) return self.list(request, *args, **kwargs)

Loading…
Cancel
Save