diff --git a/apps/account/views/notification.py b/apps/account/views/notification.py index fa20834..ab3c27f 100644 --- a/apps/account/views/notification.py +++ b/apps/account/views/notification.py @@ -6,13 +6,15 @@ from rest_framework.permissions import IsAuthenticated from apps.account.serializers import NotificationSerializer, NotificationSendSerializer from apps.account.models import Notification, User from apps.account.tasks import send_notification +from utils.pagination import StandardResultsSetPagination class NotificationListView(generics.ListAPIView): queryset = Notification.objects.all() serializer_class = NotificationSerializer - permission_classes = [IsAuthenticated,] + permission_classes = [IsAuthenticated,] + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Retrieve a list of notifications for the authenticated user or merchant account.", diff --git a/apps/article/views.py b/apps/article/views.py index 882a2de..bc8bc05 100755 --- a/apps/article/views.py +++ b/apps/article/views.py @@ -4,6 +4,7 @@ from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema from apps.library.pagination import NoPagination from rest_framework.permissions import IsAuthenticated +from utils.pagination import StandardResultsSetPagination from apps.article.models import * @@ -12,6 +13,7 @@ from apps.article.serializers import * class ArticleCategoryListAPIView(generics.ListAPIView): serializer_class = ArticleCategoryListSerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Get a list of all active article categories", @@ -34,6 +36,7 @@ class PinnedArticleCollectionListView(generics.ListAPIView): serializer_class = PinnedArticleCollectionSerializer permission_classes = (IsAuthenticated,) pagination_class = NoPagination + @swagger_auto_schema( operation_description="Get a list of pinned article collections", @@ -105,7 +108,7 @@ class MiddleArticleCollectionListView(generics.ListAPIView): class ArticleListAPIView(generics.ListAPIView): serializer_class = ArticleListSerializer permission_classes = (IsAuthenticated,) - + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Get a list of articles with optional filtering and sorting", @@ -213,7 +216,7 @@ class ArticleDetailAPIView(generics.RetrieveAPIView): serializer_class = ArticleDetailSerializer permission_classes = (IsAuthenticated,) lookup_field = 'slug' - + @swagger_auto_schema( operation_description="Get article details by slug", tags=["Dobodbi - Article"], diff --git a/apps/blog/views.py b/apps/blog/views.py index dd004e4..01b2599 100644 --- a/apps/blog/views.py +++ b/apps/blog/views.py @@ -10,6 +10,8 @@ from .serializers import BlogListSerializer, BlogDetailSerializer import random from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi +from utils.pagination import StandardResultsSetPagination + class BlogListAPIView(ListAPIView): @@ -18,7 +20,7 @@ class BlogListAPIView(ListAPIView): """ serializer_class = BlogListSerializer permission_classes = [AllowAny] - + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="List blogs with optional search and sort_by filters", tags=["Imam-Javad - Blog"], diff --git a/apps/course/views/course.py b/apps/course/views/course.py index 4961c5e..6804c69 100644 --- a/apps/course/views/course.py +++ b/apps/course/views/course.py @@ -16,6 +16,8 @@ from rest_framework.generics import GenericAPIView, ListAPIView, RetrieveAPIView from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response +from utils.pagination import StandardResultsSetPagination + logger = logging.getLogger(__name__) @@ -46,6 +48,7 @@ UserModel = get_user_model() class CourseCategoryAPIView(ListAPIView): queryset = CourseCategory.objects.all() serializer_class = CourseCategorySerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description=doc_course_category(), @@ -185,7 +188,8 @@ class CourseDetailAPIView(RetrieveAPIView): class MyCourseListAPIView(ListAPIView): serializer_class = MyCourseListSerializer - permission_classes = [IsAuthenticated] + permission_classes = [IsAuthenticated] + pagination_class = StandardResultsSetPagination @swagger_auto_schema(manual_parameters=[ openapi.Parameter( @@ -261,6 +265,7 @@ class MyCourseListAPIView(ListAPIView): class AttachmentListAPIView(ListAPIView): serializer_class = CourseAttachmentSerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( tags=['Imam-Javad - Course'], @@ -298,6 +303,7 @@ class GlossaryListAPIView(ListAPIView): serializer_class = CourseGlossarySerializer filter_backends = [SearchFilter] search_fields = ['glossary__title', 'glossary__description'] + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Get glossary terms for a specific course", diff --git a/apps/course/views/lesson.py b/apps/course/views/lesson.py index 7261040..16e99d7 100644 --- a/apps/course/views/lesson.py +++ b/apps/course/views/lesson.py @@ -11,13 +11,15 @@ from apps.course.serializers import ( ) from apps.course.models import Course, CourseLesson, LessonCompletion from apps.course.doc import * -from utils.exceptions import AppAPIException +from utils.exceptions import AppAPIException +from utils.pagination import StandardResultsSetPagination from rest_framework.permissions import IsAuthenticated class LessonListView(ListAPIView): serializer_class = CourseLessonSerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description=doc_courses_lesson(), diff --git a/apps/course/views/participant.py b/apps/course/views/participant.py index b591f76..d3129c6 100644 --- a/apps/course/views/participant.py +++ b/apps/course/views/participant.py @@ -11,11 +11,13 @@ from apps.course.serializers import ParticipantSerializer from apps.account.serializers import UserProfileSerializer from apps.course.doc import * from utils.exceptions import AppAPIException +from utils.pagination import StandardResultsSetPagination class CourseParticipantsView(generics.ListAPIView): serializer_class = UserProfileSerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description=doc_course_participants(), diff --git a/apps/hadis/views/category.py b/apps/hadis/views/category.py index 6176c96..2cca302 100644 --- a/apps/hadis/views/category.py +++ b/apps/hadis/views/category.py @@ -3,7 +3,7 @@ from rest_framework.response import Response from django.shortcuts import get_object_or_404 from utils.pagination import NoPagination from django.db.models import Q - +from utils.pagination import StandardResultsSetPagination from ..models import HadisSect, HadisCategory,Hadis from ..serializers import ( HadisCategorySectListSerializer, @@ -206,6 +206,7 @@ class HadisCategorySelectBySectView(ListAPIView): Returns the children categories of the specified category (by slug) within the sect_type. """ serializer_class = HadisCategorySelectSerializer + pagination_class = StandardResultsSetPagination @categories_tree_by_sect_swagger def get(self, request, *args, **kwargs): @@ -242,7 +243,7 @@ class HadisCategorySelectBySectSourceView(ListAPIView): Returns the children categories of the specified category (by slug) within the sect_type, filtered by source_type. """ serializer_class = HadisCategorySelectSourceSerializer - + pagination_class = StandardResultsSetPagination @categories_tree_by_sect_source_swagger def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) @@ -276,7 +277,7 @@ class CategoriesView(ListAPIView): """ queryset = HadisCategory.objects.all() serializer_class = CategorySerializer - + pagination_class = StandardResultsSetPagination @categories_list_swagger def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) diff --git a/apps/hadis/views/hadis.py b/apps/hadis/views/hadis.py index 12bdf75..7e18447 100644 --- a/apps/hadis/views/hadis.py +++ b/apps/hadis/views/hadis.py @@ -1,6 +1,6 @@ from rest_framework.generics import ListAPIView, RetrieveAPIView from django.shortcuts import get_object_or_404 -from utils.pagination import NoPagination +from utils.pagination import NoPagination, StandardResultsSetPagination from rest_framework.pagination import PageNumberPagination from rest_framework.response import Response from django.db.models import Count @@ -88,6 +88,7 @@ class HadisListView(ListAPIView): API view to list Hadis by category_id """ serializer_class = HadisListSerializer + pagination_class = StandardResultsSetPagination @hadis_list_swagger def get(self, request, *args, **kwargs): @@ -114,7 +115,7 @@ class HadisMainListView(ListAPIView): API view to list Hadis by category_id """ serializer_class = HadisListSerializer - pagination_class = PageNumberPagination + pagination_class = StandardResultsSetPagination @hadis_main_list_swagger def get(self, request, *args, **kwargs): @@ -333,6 +334,7 @@ class HadisCorrectionsView(ListAPIView): API view to retrieve corrections for a specific hadis """ serializer_class = HadisCorrectionSerializer + pagination_class = StandardResultsSetPagination lookup_field = 'slug' lookup_url_kwarg = 'hadis_slug' diff --git a/apps/hadis/views/reference.py b/apps/hadis/views/reference.py index 9de7a06..18bb2f0 100644 --- a/apps/hadis/views/reference.py +++ b/apps/hadis/views/reference.py @@ -6,13 +6,14 @@ from ..serializers.reference import BookAuthorSerializer, BookDetailSerializer , from ..serializers.category import get_localized_text from ..docs import book_attributes_create_swagger, book_attributes_list_swagger, book_references_list_swagger, book_authors_list_swagger, book_detail_swagger, reference_sync_swagger from utils.pagination import NoPagination +from utils.pagination import StandardResultsSetPagination class BookReferencesView(ListAPIView): queryset = BookReference.objects.all() serializer_class = BookReferenceSerializer - + pagination_class = StandardResultsSetPagination @book_references_list_swagger def get(self, request, *args, **kwargs): return super().get(request, *args, **kwargs) @@ -47,6 +48,7 @@ class BookReferencesView(ListAPIView): class BookAuthorView(ListAPIView): queryset = BookAuthor.objects.all() serializer_class = BookAuthorSerializer + @book_authors_list_swagger def get(self, request, *args, **kwargs): diff --git a/apps/hadis/views/transmitter.py b/apps/hadis/views/transmitter.py index 86f54da..51e1f80 100644 --- a/apps/hadis/views/transmitter.py +++ b/apps/hadis/views/transmitter.py @@ -3,7 +3,7 @@ from django.db.models import Prefetch from rest_framework.generics import ListAPIView , RetrieveAPIView from rest_framework.response import Response - +from utils.pagination import StandardResultsSetPagination from ..models import Transmitters , TransmitterOpinion, TransmitterOriginalText from ..serializers import TransmitterSerializer , TransmitterDetailSerializer, TransmitterSyncSerializer,TransmitterOpinionSerializer, TransmitterOriginalTextSerializer from ..docs import transmitter_filters_swagger,transmitter_list_swagger, transmitter_detail_swagger, transmitter_sync_swagger, transmitter_opinion_swagger, transmitter_original_text_swagger @@ -16,6 +16,7 @@ class TransmitterFliterView(ListAPIView): class TransmitterView(ListAPIView): queryset = Transmitters.objects.all() serializer_class = TransmitterSerializer + pagination_class = StandardResultsSetPagination @transmitter_list_swagger def get(self, request, *args, **kwargs): diff --git a/apps/library/views.py b/apps/library/views.py index b7c1c5e..52fedcb 100644 --- a/apps/library/views.py +++ b/apps/library/views.py @@ -18,6 +18,9 @@ from apps.library.doc import ( middle_collection_list_swagger ) +from utils.pagination import StandardResultsSetPagination + + class CategoryListView(ListAPIView): @@ -26,6 +29,7 @@ class CategoryListView(ListAPIView): """ serializer_class = CategorySerializer permission_classes = (IsAuthenticated,) + pagination_class = StandardResultsSetPagination @category_list_swagger def get(self, request, *args, **kwargs): @@ -90,7 +94,7 @@ class BookListView(ListAPIView): permission_classes = (IsAuthenticated,) filter_backends = [SearchFilter] search_fields = ['title', 'summary', 'publisher', 'isbn'] - + pagination_class = StandardResultsSetPagination @book_list_swagger def get(self, request, *args, **kwargs): return super().get(request, *args, **kwargs) diff --git a/apps/podcast/views.py b/apps/podcast/views.py index abb87b7..26e81ad 100644 --- a/apps/podcast/views.py +++ b/apps/podcast/views.py @@ -8,6 +8,8 @@ from rest_framework.permissions import IsAuthenticated from apps.podcast.models import * from apps.podcast.serializers import * +from utils.pagination import StandardResultsSetPagination + class PodcastCategoryListAPIView(generics.ListAPIView): @@ -15,6 +17,7 @@ class PodcastCategoryListAPIView(generics.ListAPIView): API view to list all podcast categories """ serializer_class = PodcastCategoryListSerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Get a list of all active podcast categories", @@ -114,7 +117,8 @@ class PodcastListAPIView(generics.ListAPIView): """ serializer_class = PodcastPlaylistListSerializer permission_classes = (IsAuthenticated,) - + pagination_class = StandardResultsSetPagination + @swagger_auto_schema( operation_description="Get a list of podcast playlists with optional filtering and sorting", tags=["Dobodbi - Podcast"], @@ -252,7 +256,8 @@ class UserPlaylistListAPIView(generics.ListAPIView): """ serializer_class = PodcastListSerializer permission_classes = (IsAuthenticated,) - + pagination_class = StandardResultsSetPagination + @swagger_auto_schema( operation_description="Get a list of podcasts in the user's personal playlist", tags=["Dobodbi - Podcast"], diff --git a/apps/transaction/views.py b/apps/transaction/views.py index e8df130..b2404d3 100644 --- a/apps/transaction/views.py +++ b/apps/transaction/views.py @@ -201,6 +201,7 @@ class TransactionParticipantCreateView(generics.CreateAPIView): +from utils.pagination import StandardResultsSetPagination @@ -208,6 +209,7 @@ class TransactiontListView(generics.ListAPIView): queryset = TransactionParticipant.objects.all() serializer_class = TransactionListSerializer permission_classes = [IsAuthenticated] + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description=doc_transaction_list(), @@ -362,6 +364,7 @@ class UploadTransactionReceiptsView(APIView): class TransactionReceiptsListView(generics.ListAPIView): serializer_class = TransactionReceiptSerializer permission_classes = [IsAuthenticated] + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_summary="List receipts for a transaction", diff --git a/apps/video/views.py b/apps/video/views.py index a63a493..4dfdae2 100644 --- a/apps/video/views.py +++ b/apps/video/views.py @@ -3,6 +3,7 @@ from rest_framework.response import Response from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema from apps.library.pagination import NoPagination +from utils.pagination import StandardResultsSetPagination from rest_framework.permissions import IsAuthenticated @@ -15,6 +16,7 @@ class VideoCategoryListAPIView(generics.ListAPIView): API view to list all video categories """ serializer_class = VideoCategoryListSerializer + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Get a list of all active video categories", @@ -115,6 +117,7 @@ class VideoPlaylistListAPIView(generics.ListAPIView): """ serializer_class = VideoPlaylistListSerializer permission_classes = (IsAuthenticated,) + pagination_class = StandardResultsSetPagination @swagger_auto_schema( operation_description="Get a list of video playlists with optional filtering", diff --git a/config/settings/base.py b/config/settings/base.py index 883c813..3e9fd0d 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -231,8 +231,8 @@ AUTH_PASSWORD_VALIDATORS = [ REST_FRAMEWORK = { - 'DEFAULT_PAGINATION_CLASS': 'utils.pagination.StandardResultsSetPagination', - 'PAGE_SIZE': 16, + # 'DEFAULT_PAGINATION_CLASS': 'utils.pagination.StandardResultsSetPagination', + # 'PAGE_SIZE': 16, # 'DEFAULT_AUTHENTICATION_CLASSES': [ # 'apps.account.auth_back.TokenAuthentication2', # ], diff --git a/utils/redis.py b/utils/redis.py index 7295973..545b330 100644 --- a/utils/redis.py +++ b/utils/redis.py @@ -118,4 +118,4 @@ class OnlineClassTokenManager(RedisConfig): query_params = dict(parse_qsl(parsed.query)) query_params["token"] = token new_query = urlencode(query_params) - return urlunparse(parsed._replace(query=new_query)) + return urlunparse(parsed._replace(query=new_query)) \ No newline at end of file