Browse Source

feat: implement HadisSect and HadisCategory models and configure corresponding API routes

master
Mohsen Taba 2 months ago
parent
commit
7ed8869d3d
  1. 2
      apps/hadis/models/category.py
  2. 14
      apps/hadis/urls.py
  3. 2
      entrypoint.sh

2
apps/hadis/models/category.py

@ -158,7 +158,7 @@ class HadisCategory(MPTTModel):
@property
def xmind_share_link(self):
if self.slug and self.xmind_file:
if self.slug:
return f"{settings.DOVODI_DOMAIN}/xmind/{self.slug}"
return None

14
apps/hadis/urls.py

@ -22,7 +22,7 @@ urlpatterns = [
path('sync/narrators/', TransmitterSyncView.as_view(), name='transmitter-sync'),
path('sync/references/', BookReferenceSyncView.as_view(), name='reference-sync'),
path('sync/version/', ContentReleaseSyncView.as_view(), name='content-release-sync'),
path('info/', cached_view(HadisInfoView.as_view()), name='hadis-info'),
path('info/', HadisInfoView.as_view(), name='hadis-info'),
# Category paths (more specific first)
path('categories/tree/', HadisCategoryTreeNormalView.as_view(), name='hadis-category-tree-normal'),
@ -34,19 +34,19 @@ urlpatterns = [
# Hadis paths
path('category/<str:category_slug>/xmind/', HadisCategoryXMindView.as_view(), name='hadis-category-xmind'), # ← Must be before other category paths
path('category/<str:category_slug>/', 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'),
path('arguments/', HadisMainListView.as_view(), name='hadis-main-list'),
path('arguments/filters/', 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', cached_view(TransmitterOriginalTextView.as_view()), name='narrator-original-texts'),
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/', cached_view(TransmitterFiltersView.as_view()), name='narrator-filters'),
path('narrators/', cached_view(TransmitterView.as_view()), name='narrators'),
path('narrators/filters/', TransmitterFiltersView.as_view(), name='narrator-filters'),
path('narrators/', TransmitterView.as_view(), name='narrators'),
# Reference paths
path('references/<str:reference_slug>', BookDetailView.as_view(), name='reference-detail'),
path('references/', cached_view(BookReferencesView.as_view()), name='references'),
path('references/', BookReferencesView.as_view(), name='references'),
# Hadis detail paths (with slug, more specific)
path('<str:hadis_slug>/detail/', HadisDetailView.as_view(), name='hadis-detail'),

2
entrypoint.sh

@ -16,5 +16,5 @@ python manage.py collectstatic --noinput
# python manage.py populate_article
# python manage.py populate_books
# python manage.py seed_category_data
python manage.py refresh_share_links
# python manage.py refresh_share_links
exec "$@"
Loading…
Cancel
Save