Browse Source

pagination added for list views.

master
Mohsen Taba 5 months ago
parent
commit
1396da9190
  1. 4
      apps/account/views/notification.py
  2. 7
      apps/article/views.py
  3. 4
      apps/blog/views.py
  4. 8
      apps/course/views/course.py
  5. 4
      apps/course/views/lesson.py
  6. 2
      apps/course/views/participant.py
  7. 7
      apps/hadis/views/category.py
  8. 6
      apps/hadis/views/hadis.py
  9. 4
      apps/hadis/views/reference.py
  10. 3
      apps/hadis/views/transmitter.py
  11. 6
      apps/library/views.py
  12. 9
      apps/podcast/views.py
  13. 3
      apps/transaction/views.py
  14. 3
      apps/video/views.py
  15. 4
      config/settings/base.py
  16. 2
      utils/redis.py

4
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.",

7
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"],

4
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"],

8
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",

4
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(),

2
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(),

7
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)

6
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'

4
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):

3
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):

6
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)

9
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"],

3
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",

3
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",

4
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',
# ],

2
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))
Loading…
Cancel
Save