|
|
|
@ -9,7 +9,10 @@ from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet |
|
|
|
from apps.account.permissions import IsSuperAdmin |
|
|
|
from utils.pagination import StandardResultsSetPagination |
|
|
|
|
|
|
|
from .models import Hadis, HadisCategory, HadisCorrection, HadisInterpretation, HadisStatus, HadisTag |
|
|
|
from .models import ( |
|
|
|
Hadis, HadisCategory, HadisCorrection, HadisInterpretation, HadisStatus, HadisTag, |
|
|
|
BookReference, BookReferenceImage, BookReferenceDocument, BookAuthor, BookAttribute, BookSubjectArea, BookType |
|
|
|
) |
|
|
|
from .serializers.serializers_admin import ( |
|
|
|
AdminHadisCategorySerializer, |
|
|
|
AdminHadisCorrectionSerializer, |
|
|
|
@ -18,6 +21,14 @@ from .serializers.serializers_admin import ( |
|
|
|
AdminHadisListSerializer, |
|
|
|
AdminHadisStatusSerializer, |
|
|
|
AdminHadisTagSerializer, |
|
|
|
AdminBookSubjectAreaSerializer, |
|
|
|
AdminBookTypeSerializer, |
|
|
|
AdminBookAuthorSerializer, |
|
|
|
AdminBookAttributeSerializer, |
|
|
|
AdminBookReferenceImageSerializer, |
|
|
|
AdminBookReferenceDocumentSerializer, |
|
|
|
AdminBookReferenceListSerializer, |
|
|
|
AdminBookReferenceDetailSerializer, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
@ -138,3 +149,122 @@ class AdminHadisInterpretationViewSet(ModelViewSet): |
|
|
|
HadisInterpretation.objects.filter(id=interpretation_id).update(priority=index) |
|
|
|
|
|
|
|
return Response({"status": "success"}) |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookSubjectAreaViewSet(ReadOnlyModelViewSet): |
|
|
|
serializer_class = AdminBookSubjectAreaSerializer |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
pagination_class = None |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
return BookSubjectArea.objects.all().order_by("id") |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookTypeViewSet(ReadOnlyModelViewSet): |
|
|
|
serializer_class = AdminBookTypeSerializer |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
pagination_class = None |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
return BookType.objects.all().order_by("id") |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookAuthorViewSet(ModelViewSet): |
|
|
|
serializer_class = AdminBookAuthorSerializer |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
pagination_class = None |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
queryset = BookAuthor.objects.all() |
|
|
|
search_query = self.request.query_params.get("search") |
|
|
|
if search_query: |
|
|
|
queryset = queryset.filter(name__icontains=search_query) |
|
|
|
return queryset.order_by("id") |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookAttributeViewSet(ModelViewSet): |
|
|
|
serializer_class = AdminBookAttributeSerializer |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
pagination_class = None |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
queryset = BookAttribute.objects.all() |
|
|
|
book_reference_id = self.request.query_params.get("book_reference_id") |
|
|
|
if book_reference_id: |
|
|
|
queryset = queryset.filter(book_reference_id=book_reference_id) |
|
|
|
return queryset.order_by("id") |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookReferenceImageViewSet(ModelViewSet): |
|
|
|
serializer_class = AdminBookReferenceImageSerializer |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
parser_classes = (MultiPartParser, FormParser, JSONParser) |
|
|
|
pagination_class = None |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
queryset = BookReferenceImage.objects.all() |
|
|
|
book_reference_id = self.request.query_params.get("book_reference_id") |
|
|
|
if book_reference_id: |
|
|
|
queryset = queryset.filter(book_reference_id=book_reference_id) |
|
|
|
return queryset.order_by("order", "id") |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookReferenceDocumentViewSet(ModelViewSet): |
|
|
|
serializer_class = AdminBookReferenceDocumentSerializer |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
parser_classes = (MultiPartParser, FormParser, JSONParser) |
|
|
|
pagination_class = None |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
queryset = BookReferenceDocument.objects.all() |
|
|
|
book_reference_id = self.request.query_params.get("book_reference_id") |
|
|
|
if book_reference_id: |
|
|
|
queryset = queryset.filter(book_reference_id=book_reference_id) |
|
|
|
return queryset.order_by("order", "id") |
|
|
|
|
|
|
|
|
|
|
|
class AdminBookReferenceViewSet(ModelViewSet): |
|
|
|
permission_classes = [IsAuthenticated, IsSuperAdmin] |
|
|
|
authentication_classes = [TokenAuthentication] |
|
|
|
pagination_class = StandardResultsSetPagination |
|
|
|
parser_classes = (MultiPartParser, FormParser, JSONParser) |
|
|
|
|
|
|
|
def get_serializer_class(self): |
|
|
|
if self.action == "list": |
|
|
|
return AdminBookReferenceListSerializer |
|
|
|
return AdminBookReferenceDetailSerializer |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
queryset = BookReference.objects.all().prefetch_related("subject_area", "authors").select_related("type") |
|
|
|
|
|
|
|
search_query = self.request.query_params.get("search") |
|
|
|
if search_query: |
|
|
|
queryset = queryset.filter( |
|
|
|
Q(title__icontains=search_query) |
|
|
|
| Q(slug__icontains=search_query) |
|
|
|
| Q(isbn__icontains=search_query) |
|
|
|
| Q(publisher__icontains=search_query) |
|
|
|
| Q(description__icontains=search_query) |
|
|
|
| Q(researcher__icontains=search_query) |
|
|
|
) |
|
|
|
|
|
|
|
type_id = self.request.query_params.get("type") |
|
|
|
if type_id and type_id != "all": |
|
|
|
queryset = queryset.filter(type_id=type_id) |
|
|
|
|
|
|
|
subject_area_id = self.request.query_params.get("subject_area") |
|
|
|
if subject_area_id and subject_area_id != "all": |
|
|
|
queryset = queryset.filter(subject_area__id=subject_area_id) |
|
|
|
|
|
|
|
author_id = self.request.query_params.get("author") |
|
|
|
if author_id and author_id != "all": |
|
|
|
queryset = queryset.filter(authors__id=author_id) |
|
|
|
|
|
|
|
return queryset.distinct().order_by("-created_at") |
|
|
|
|