|
|
@ -262,19 +262,22 @@ class TransmitterFiltersView(ListAPIView): |
|
|
def list(self, request, *args, **kwargs): |
|
|
def list(self, request, *args, **kwargs): |
|
|
return Response(get_transmitter_filters(request)) |
|
|
return Response(get_transmitter_filters(request)) |
|
|
|
|
|
|
|
|
|
|
|
from ..serializers.category import CategorySerializer |
|
|
|
|
|
from ..models.category import HadisCategory |
|
|
|
|
|
|
|
|
class NarratorArgumentsListView(ListAPIView): |
|
|
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 |
|
|
pagination_class = StandardResultsSetPagination |
|
|
# در صورت نیاز به احراز هویت میتوانید کامنت زیر را باز کنید: |
|
|
# در صورت نیاز به احراز هویت میتوانید کامنت زیر را باز کنید: |
|
|
# authentication_classes = [TokenAuthentication] |
|
|
# authentication_classes = [TokenAuthentication] |
|
|
|
|
|
|
|
|
@swagger_auto_schema( |
|
|
@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)'], |
|
|
tags=['Dobodbi - Hadis (V2)'], |
|
|
) |
|
|
) |
|
|
def get(self, request, *args, **kwargs): |
|
|
def get(self, request, *args, **kwargs): |
|
|
@ -283,13 +286,10 @@ class NarratorArgumentsListView(ListAPIView): |
|
|
def get_queryset(self): |
|
|
def get_queryset(self): |
|
|
narrator_slug = self.kwargs.get('narrator_slug') |
|
|
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') |
|
|
).distinct().order_by('id') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|