From 880f5492c5f767a31c7fe9cf773ebf3b7e631e06 Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Sat, 20 Jun 2026 11:02:00 +0330 Subject: [PATCH] narrators filters added to narrators sync api --- apps/hadis/docs.py | 7 +++++ apps/hadis/views/transmitter.py | 55 +++++++++++++++++---------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/apps/hadis/docs.py b/apps/hadis/docs.py index 000bb31..8cc822b 100644 --- a/apps/hadis/docs.py +++ b/apps/hadis/docs.py @@ -1384,6 +1384,13 @@ transmitter_sync_swagger = swagger_auto_schema( examples={ "application/json": { "count": 10, + "filters": { + "generations": [1, 2, 3], + "madhabs": ["shia", "sunni", "unknown"], + "reliabilities": [ + {"text": "Very Reliable", "slug": "very-reliable"} + ] + }, "results": [ { "id": 51, diff --git a/apps/hadis/views/transmitter.py b/apps/hadis/views/transmitter.py index 1eb3c44..9e326e1 100644 --- a/apps/hadis/views/transmitter.py +++ b/apps/hadis/views/transmitter.py @@ -141,12 +141,40 @@ class TransmitterSyncView(ListAPIView): response_data = { 'count': len(serializer.data), # ← No extra query! + 'filters': get_transmitter_filters(request), 'results': serializer.data } return Response(response_data) +def get_transmitter_filters(request): + # Get all unique generations + generations = Transmitters.objects.exclude(generation__isnull=True).values_list('generation', flat=True).distinct().order_by('generation') + + # Get madhhab choices + madhabs = [] + for choice in Transmitters.MadhhabChoices: + madhabs.append(choice.value) + + # Get reliabilities from TransmitterReliability model + from ..models.transmitter import TransmitterReliability + reliabilities = [] + for reliability in TransmitterReliability.objects.all().order_by('id'): + # Get the English title for the slug + if reliability.title: + reliabilities.append({ + 'text': get_localized_text(reliability.title, request), + 'slug': reliability.slug + }) + + return { + 'generations': list(generations), + 'madhabs': madhabs, + 'reliabilities': reliabilities + } + + class TransmitterFiltersView(ListAPIView): """ API view to return filter data for transmitters @@ -163,30 +191,5 @@ class TransmitterFiltersView(ListAPIView): return Transmitters.objects.none() def list(self, request, *args, **kwargs): - # Get all unique generations - generations = Transmitters.objects.exclude(generation__isnull=True).values_list('generation', flat=True).distinct().order_by('generation') - - # Get madhhab choices - madhabs = [] - for choice in Transmitters.MadhhabChoices: - madhabs.append(choice.value) - - # Get reliabilities from TransmitterReliability model - from ..models.transmitter import TransmitterReliability - reliabilities = [] - for reliability in TransmitterReliability.objects.all().order_by('id'): - # Get the English title for the slug - if reliability.title: - reliabilities.append({ - 'text': get_localized_text(reliability.title,request), - 'slug': reliability.slug - }) - - response_data = { - 'generations': list(generations), - 'madhabs': madhabs, - 'reliabilities': reliabilities - } - - return Response(response_data) + return Response(get_transmitter_filters(request))