|
|
|
@ -4,12 +4,12 @@ from rest_framework.generics import ListAPIView , RetrieveAPIView |
|
|
|
from rest_framework.response import Response |
|
|
|
|
|
|
|
from utils.pagination import StandardResultsSetPagination |
|
|
|
from ..models import Transmitters , TransmitterOpinion, TransmitterOriginalText |
|
|
|
from ..serializers import TransmitterSerializer , TransmitterDetailSerializer, TransmitterSyncSerializer,TransmitterOpinionSerializer, TransmitterOriginalTextSerializer |
|
|
|
from ..models import Transmitters , TransmitterOpinion, TransmitterOriginalText, Hadis |
|
|
|
from ..serializers import TransmitterSerializer , TransmitterDetailSerializer, TransmitterSyncSerializer,TransmitterOpinionSerializer, TransmitterOriginalTextSerializer, HadisListSerializer |
|
|
|
from ..docs import transmitter_filters_swagger,transmitter_list_swagger, transmitter_detail_swagger, transmitter_sync_swagger, transmitter_opinion_swagger, transmitter_original_text_swagger |
|
|
|
from utils.pagination import NoPagination |
|
|
|
from .category import get_localized_text |
|
|
|
|
|
|
|
from ..serializers import HadisListSerializer |
|
|
|
class TransmitterFliterView(ListAPIView): |
|
|
|
pass |
|
|
|
|
|
|
|
@ -130,7 +130,8 @@ class TransmitterSyncView(ListAPIView): |
|
|
|
Transmitters.objects |
|
|
|
.prefetch_related( |
|
|
|
Prefetch('opinions', queryset=TransmitterOpinion.objects.select_related('status')), |
|
|
|
Prefetch('originaltexts', queryset=TransmitterOriginalText.objects.all()) |
|
|
|
Prefetch('originaltexts', queryset=TransmitterOriginalText.objects.all()), |
|
|
|
'hadises' |
|
|
|
) |
|
|
|
.order_by('id') |
|
|
|
) |
|
|
|
@ -193,3 +194,24 @@ class TransmitterFiltersView(ListAPIView): |
|
|
|
def list(self, request, *args, **kwargs): |
|
|
|
return Response(get_transmitter_filters(request)) |
|
|
|
|
|
|
|
class NarratorArgumentsListView(ListAPIView): |
|
|
|
""" |
|
|
|
API view to list all Hadis (arguments) where a specific narrator |
|
|
|
exists in the transmission chain (prefetching category and status). |
|
|
|
""" |
|
|
|
serializer_class = HadisListSerializer |
|
|
|
pagination_class = StandardResultsSetPagination |
|
|
|
# در صورت نیاز به احراز هویت میتوانید کامنت زیر را باز کنید: |
|
|
|
# authentication_classes = [TokenAuthentication] |
|
|
|
|
|
|
|
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' |
|
|
|
).distinct().order_by('id') |