Browse Source

transmitters arguments returns related categories

master
Mohsen Taba 3 weeks ago
parent
commit
604f6930cb
  1. 24
      apps/hadis/views/transmitter.py

24
apps/hadis/views/transmitter.py

@ -262,19 +262,22 @@ class TransmitterFiltersView(ListAPIView):
def list(self, request, *args, **kwargs):
return Response(get_transmitter_filters(request))
from ..serializers.category import CategorySerializer
from ..models.category import HadisCategory
class NarratorArgumentsListView(ListAPIView):
"""
API view to list all Hadis (arguments) where a specific narrator
exists in the transmission chain (prefetching category and status).
API view to list all Hadis Categories where a specific narrator
exists in the transmission chain of hadiths within that category.
"""
serializer_class = HadisListSerializer
serializer_class = CategorySerializer
pagination_class = StandardResultsSetPagination
# در صورت نیاز به احراز هویت می‌توانید کامنت زیر را باز کنید:
# authentication_classes = [TokenAuthentication]
@swagger_auto_schema(
operation_summary="Narrator Arguments List",
operation_description="Returns a paginated list of Hadis (arguments) for a specific narrator.",
operation_summary="Narrator Arguments List (Categories)",
operation_description="Returns a paginated list of Hadis Categories for a specific narrator based on the hadiths they appear in.",
tags=['Dobodbi - Hadis (V2)'],
)
def get(self, request, *args, **kwargs):
@ -283,13 +286,10 @@ class NarratorArgumentsListView(ListAPIView):
def get_queryset(self):
narrator_slug = self.kwargs.get('narrator_slug')
# فیلتر کردن احادیث فعال که این راوی در زنجیره سند (transmitters) آن‌ها حضور دارد
return Hadis.objects.filter(
transmitters__transmitter__slug=narrator_slug,
status=True
).select_related(
'category__sect',
'hadis_status'
# فیلتر کردن دسته‌بندی‌هایی که در آن‌ها حدیث فعالی وجود دارد که این راوی در زنجیره آن حضور دارد
return HadisCategory.objects.filter(
hadis__transmitters__transmitter__slug=narrator_slug,
hadis__status=True
).distinct().order_by('id')

Loading…
Cancel
Save