diff --git a/apps/account/views/user.py b/apps/account/views/user.py index ba381fb..b39e47b 100644 --- a/apps/account/views/user.py +++ b/apps/account/views/user.py @@ -626,6 +626,7 @@ from rest_framework.viewsets import ModelViewSet from rest_framework.filters import SearchFilter, OrderingFilter from django_filters.rest_framework import DjangoFilterBackend from rest_framework.permissions import IsAdminUser +from utils.pagination import StandardResultsSetPagination class AdminUserViewSet(ModelViewSet): """ @@ -635,6 +636,7 @@ class AdminUserViewSet(ModelViewSet): serializer_class = AdminUserSerializer permission_classes = [IsAuthenticated, IsAdminUser] # Strictly admin only authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination filter_backends = [] # Disable default backend filtering to use custom manual filtering def get_queryset(self): diff --git a/apps/api/views/admin_dashboard.py b/apps/api/views/admin_dashboard.py index d6b4eb7..9c83305 100644 --- a/apps/api/views/admin_dashboard.py +++ b/apps/api/views/admin_dashboard.py @@ -13,8 +13,10 @@ from apps.blog.models import Blog from apps.chat.models import ChatMessage, RoomMessage from apps.transaction.models import TransactionParticipant from apps.certificate.models import Certificate +from rest_framework.authentication import TokenAuthentication class AdminDashboardStatsView(APIView): + authentication_classes = [TokenAuthentication] permission_classes = [IsAuthenticated, IsAdminUser] def get(self, request): diff --git a/apps/blog/views_admin.py b/apps/blog/views_admin.py index 3e95ed4..58f8863 100644 --- a/apps/blog/views_admin.py +++ b/apps/blog/views_admin.py @@ -5,6 +5,7 @@ from rest_framework.authentication import TokenAuthentication from rest_framework.parsers import MultiPartParser, FormParser, JSONParser from rest_framework.decorators import action from rest_framework.response import Response +from utils.pagination import StandardResultsSetPagination from .models import Blog, BlogContent, BlogSeo from .serializers_admin import ( @@ -20,6 +21,7 @@ class AdminBlogViewSet(ModelViewSet): """ permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination # Allow multipart so admins can upload thumbnail images directly parser_classes = (MultiPartParser, FormParser, JSONParser) diff --git a/apps/certificate/views.py b/apps/certificate/views.py index 11e1c5d..f4fdd6d 100644 --- a/apps/certificate/views.py +++ b/apps/certificate/views.py @@ -65,6 +65,7 @@ class AdminCertificateViewSet(ModelViewSet): serializer_class = AdminCertificateSerializer permission_classes = [permissions.IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination def get_queryset(self): queryset = Certificate.objects.all().select_related('student', 'course') diff --git a/apps/course/views/admin.py b/apps/course/views/admin.py index 2669f16..ab280ff 100644 --- a/apps/course/views/admin.py +++ b/apps/course/views/admin.py @@ -4,6 +4,7 @@ from rest_framework.permissions import IsAuthenticated, IsAdminUser from rest_framework.authentication import TokenAuthentication from rest_framework.decorators import action from rest_framework.response import Response +from utils.pagination import StandardResultsSetPagination from apps.course.models import ( Course, CourseCategory, @@ -39,6 +40,7 @@ class AdminCourseViewSet(viewsets.ModelViewSet): """ permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination def get_serializer_class(self): if self.action == 'list': @@ -216,6 +218,7 @@ class AdminCourseCategoryViewSet(viewsets.ModelViewSet): permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] serializer_class = AdminCourseCategorySerializer + pagination_class = StandardResultsSetPagination def get_queryset(self): queryset = CourseCategory.objects.all().order_by('-id') @@ -232,6 +235,7 @@ class AdminLessonViewSet(viewsets.ModelViewSet): permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] serializer_class = AdminLessonSerializer + pagination_class = StandardResultsSetPagination def get_queryset(self): queryset = Lesson.objects.all().order_by('-id') @@ -253,6 +257,7 @@ class AdminGlossaryViewSet(viewsets.ModelViewSet): permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] serializer_class = AdminGlossarySerializer + pagination_class = StandardResultsSetPagination def get_queryset(self): queryset = Glossary.objects.all().order_by('-id') @@ -269,6 +274,7 @@ class AdminAttachmentViewSet(viewsets.ModelViewSet): permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] serializer_class = AdminAttachmentSerializer + pagination_class = StandardResultsSetPagination def get_queryset(self): queryset = Attachment.objects.all().order_by('-id') @@ -284,6 +290,7 @@ class AdminLiveSessionViewSet(viewsets.ModelViewSet): """ permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination def get_serializer_class(self): if self.action == 'list': diff --git a/apps/quiz/views/admin.py b/apps/quiz/views/admin.py index 0a7babb..fa53d9d 100644 --- a/apps/quiz/views/admin.py +++ b/apps/quiz/views/admin.py @@ -6,6 +6,7 @@ from rest_framework.authentication import TokenAuthentication from rest_framework.decorators import action from rest_framework.response import Response from django.shortcuts import get_object_or_404 +from utils.pagination import StandardResultsSetPagination from apps.quiz.models import Quiz, Question, QuizParticipant from apps.course.models import Course, CourseLesson, Participant @@ -29,6 +30,7 @@ class AdminQuizViewSet(ModelViewSet): """ permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination def get_serializer_class(self): if self.action == 'list': diff --git a/apps/transaction/views.py b/apps/transaction/views.py index ce68e00..aca004e 100644 --- a/apps/transaction/views.py +++ b/apps/transaction/views.py @@ -420,6 +420,7 @@ from rest_framework.viewsets import ModelViewSet from rest_framework.permissions import IsAdminUser from apps.transaction.serializers import AdminTransactionSerializer from django.db.models import Q +from utils.pagination import StandardResultsSetPagination class AdminTransactionViewSet(ModelViewSet): """ @@ -430,6 +431,7 @@ class AdminTransactionViewSet(ModelViewSet): serializer_class = AdminTransactionSerializer permission_classes = [IsAuthenticated, IsAdminUser] authentication_classes = [TokenAuthentication] + pagination_class = StandardResultsSetPagination http_method_names = ['get', 'patch', 'head', 'options'] def get_queryset(self):