diff --git a/apps/hadis/serializers/serializers_admin.py b/apps/hadis/serializers/serializers_admin.py index d72e060..032bc3c 100644 --- a/apps/hadis/serializers/serializers_admin.py +++ b/apps/hadis/serializers/serializers_admin.py @@ -3,7 +3,7 @@ from django.core.files.uploadedfile import SimpleUploadedFile from utils.image_compression import maybe_compress_uploaded_file from ..models import ( - Hadis, HadisCategory, HadisStatus, HadisTag, HadisCorrection, HadisInterpretation, HadisCollection, HadisSect, HadisInCollection, + Hadis, HadisCategory, HadisStatus, HadisTag, HadisCorrection, HadisInterpretation, HadisCollection, HadisSect, HadisInCollection, HadisTransmitter, BookReference, BookReferenceImage, BookReferenceDocument, BookAuthor, BookAttribute, BookSubjectArea, BookType, Transmitters, TransmitterReliability, NarratorLayer, OpinionStatus ) @@ -719,3 +719,18 @@ class AdminCategoryQuranVerseSerializer(serializers.ModelSerializer): else: QuranSecondaryTranslation.objects.create(quran_verse=instance, **sec) return instance + + +class AdminHadisTransmitterSerializer(serializers.ModelSerializer): + class Meta: + model = HadisTransmitter + fields = [ + "id", + "hadis", + "transmitter", + "chain_index", + "narrator_layer", + "status", + "order", + "is_gap", + ] diff --git a/apps/hadis/urls.py b/apps/hadis/urls.py index a0375a4..0bfea93 100644 --- a/apps/hadis/urls.py +++ b/apps/hadis/urls.py @@ -18,7 +18,7 @@ from .views_admin import ( AdminBookSubjectAreaViewSet, AdminBookTypeViewSet, AdminBookAuthorViewSet, AdminBookAttributeViewSet, AdminBookReferenceImageViewSet, AdminBookReferenceDocumentViewSet, AdminBookReferenceViewSet, AdminTransmitterViewSet, AdminTransmitterReliabilityViewSet, DovodiBookSubjectAreaViewSet, DovodiBookTypeViewSet, DovodiNarratorLayerViewSet, DovodiTransmitterReliabilityViewSet, DovodiOpinionStatusViewSet, - DovodiHadisSectViewSet, DovodiHadisCategoryViewSet, AdminCategoryQuranVerseViewSet + DovodiHadisSectViewSet, DovodiHadisCategoryViewSet, AdminCategoryQuranVerseViewSet, AdminHadisTransmitterViewSet ) from .views.reference_v2 import BookAuthorListView, BookAuthorDetailView, AuthorReferencesListView, BookAuthorSyncView from django.views.decorators.cache import cache_page @@ -53,6 +53,7 @@ admin_router.register(r'transmitter-reliabilities', AdminTransmitterReliabilityV admin_router.register(r'dovodi-narrator-layers', DovodiNarratorLayerViewSet, basename='dovodi-narrator-layers') admin_router.register(r'dovodi-transmitter-reliabilities', DovodiTransmitterReliabilityViewSet, basename='dovodi-transmitter-reliabilities') admin_router.register(r'dovodi-opinion-statuses', DovodiOpinionStatusViewSet, basename='dovodi-opinion-statuses') +admin_router.register(r'hadis-transmitters', AdminHadisTransmitterViewSet, basename='admin-hadis-transmitters') # Hide admin viewsets from swagger for prefix, viewset, basename in admin_router.registry: diff --git a/apps/hadis/views_admin.py b/apps/hadis/views_admin.py index b8b2677..19b74c1 100644 --- a/apps/hadis/views_admin.py +++ b/apps/hadis/views_admin.py @@ -11,7 +11,7 @@ from apps.account.permissions import IsSuperAdmin from utils.pagination import StandardResultsSetPagination from .models import ( - Hadis, HadisCategory, HadisCollection, HadisCorrection, HadisInterpretation, HadisStatus, HadisTag, HadisSect, + Hadis, HadisCategory, HadisCollection, HadisCorrection, HadisInterpretation, HadisStatus, HadisTag, HadisSect, HadisTransmitter, BookReference, BookReferenceImage, BookReferenceDocument, BookAuthor, BookAttribute, BookSubjectArea, BookType, Transmitters, TransmitterReliability, NarratorLayer, OpinionStatus ) @@ -39,6 +39,7 @@ from .serializers.serializers_admin import ( AdminTransmitterReliabilitySerializer, AdminNarratorLayerSerializer, AdminOpinionStatusSerializer, + AdminHadisTransmitterSerializer, ) @@ -260,7 +261,7 @@ class AdminTransmitterViewSet(ModelViewSet): if generation_filter and generation_filter != "all": queryset = queryset.filter(generation=generation_filter) - return queryset.order_by("full_name", "id") + return queryset.order_by("id") @@ -520,3 +521,17 @@ class AdminCategoryQuranVerseViewSet(ModelViewSet): if category_id: queryset = queryset.filter(category_id=category_id) return queryset + + +class AdminHadisTransmitterViewSet(ModelViewSet): + serializer_class = AdminHadisTransmitterSerializer + permission_classes = [IsAuthenticated, IsSuperAdmin] + authentication_classes = [TokenAuthentication] + parser_classes = (JSONParser, MultiPartParser, FormParser) + + def get_queryset(self): + queryset = HadisTransmitter.objects.all().select_related("transmitter", "narrator_layer", "status") + hadis_id = self.request.query_params.get("hadis_id") + if hadis_id: + queryset = queryset.filter(hadis_id=hadis_id) + return queryset.order_by("order")