Browse Source

narrators filters added to narrators sync api

master
Mohsen Taba 1 month ago
parent
commit
880f5492c5
  1. 7
      apps/hadis/docs.py
  2. 39
      apps/hadis/views/transmitter.py

7
apps/hadis/docs.py

@ -1384,6 +1384,13 @@ transmitter_sync_swagger = swagger_auto_schema(
examples={ examples={
"application/json": { "application/json": {
"count": 10, "count": 10,
"filters": {
"generations": [1, 2, 3],
"madhabs": ["shia", "sunni", "unknown"],
"reliabilities": [
{"text": "Very Reliable", "slug": "very-reliable"}
]
},
"results": [ "results": [
{ {
"id": 51, "id": 51,

39
apps/hadis/views/transmitter.py

@ -141,28 +141,14 @@ class TransmitterSyncView(ListAPIView):
response_data = { response_data = {
'count': len(serializer.data), # ← No extra query! 'count': len(serializer.data), # ← No extra query!
'filters': get_transmitter_filters(request),
'results': serializer.data 'results': serializer.data
} }
return Response(response_data) return Response(response_data)
class TransmitterFiltersView(ListAPIView):
"""
API view to return filter data for transmitters
Returns generations, madhabs, and reliabilities for filtering
"""
pagination_class = NoPagination
@transmitter_filters_swagger
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def get_queryset(self):
# This view doesn't need a queryset, it returns computed data
return Transmitters.objects.none()
def list(self, request, *args, **kwargs):
def get_transmitter_filters(request):
# Get all unique generations # Get all unique generations
generations = Transmitters.objects.exclude(generation__isnull=True).values_list('generation', flat=True).distinct().order_by('generation') generations = Transmitters.objects.exclude(generation__isnull=True).values_list('generation', flat=True).distinct().order_by('generation')
@ -182,11 +168,28 @@ class TransmitterFiltersView(ListAPIView):
'slug': reliability.slug 'slug': reliability.slug
}) })
response_data = {
return {
'generations': list(generations), 'generations': list(generations),
'madhabs': madhabs, 'madhabs': madhabs,
'reliabilities': reliabilities 'reliabilities': reliabilities
} }
return Response(response_data)
class TransmitterFiltersView(ListAPIView):
"""
API view to return filter data for transmitters
Returns generations, madhabs, and reliabilities for filtering
"""
pagination_class = NoPagination
@transmitter_filters_swagger
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def get_queryset(self):
# This view doesn't need a queryset, it returns computed data
return Transmitters.objects.none()
def list(self, request, *args, **kwargs):
return Response(get_transmitter_filters(request))
Loading…
Cancel
Save