diff --git a/apps/article/views.py b/apps/article/views.py index 1644083..d325805 100755 --- a/apps/article/views.py +++ b/apps/article/views.py @@ -9,7 +9,7 @@ from rest_framework.viewsets import ModelViewSet 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 utils.pagination import StandardResultsSetPagination, OptionalPagination from utils.mixins import CanonicalSlugViewSetMixin, Gone410ViewMixin @@ -279,13 +279,16 @@ class DovodiArticleCategoryViewSet(ModelViewSet): serializer_class = DovodiArticleCategorySerializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] - pagination_class = None + pagination_class = OptionalPagination def get_queryset(self): - queryset = ArticleCategory.objects.all().order_by("order", "title") + queryset = ArticleCategory.objects.all().order_by("-created_at", "-id") search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter(Q(title__icontains=search_query) | Q(slug__icontains=search_query)) + status_filter = self.request.query_params.get("status") + if status_filter in {"true", "false"}: + queryset = queryset.filter(status=status_filter == "true") return queryset @@ -293,14 +296,17 @@ class DovodiArticleCollectionViewSet(ModelViewSet): serializer_class = DovodiArticleCollectionSerializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] - pagination_class = None + pagination_class = OptionalPagination parser_classes = (MultiPartParser, FormParser, JSONParser) def get_queryset(self): - queryset = ArticleCollection.objects.all().order_by("display_position", "order", "title") + queryset = ArticleCollection.objects.all().order_by("-created_at", "-id") search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter(Q(title__icontains=search_query) | Q(slug__icontains=search_query)) + status_filter = self.request.query_params.get("status") + if status_filter in {"true", "false"}: + queryset = queryset.filter(status=status_filter == "true") return queryset @action(detail=True, methods=["post"], url_path="assign-items") diff --git a/apps/library/views_admin.py b/apps/library/views_admin.py index 01ccf1b..e32e7b2 100644 --- a/apps/library/views_admin.py +++ b/apps/library/views_admin.py @@ -49,7 +49,7 @@ class DovodiAdminLibraryCategoryViewSet(ModelViewSet): if status_filter in {"true", "false"}: queryset = queryset.filter(status=status_filter == "true") - return queryset.order_by("title", "id") + return queryset.order_by("-created_at", "-id") class AdminLibraryCollectionViewSet(ModelViewSet): diff --git a/apps/podcast/views.py b/apps/podcast/views.py index 5974844..55847a3 100644 --- a/apps/podcast/views.py +++ b/apps/podcast/views.py @@ -375,13 +375,16 @@ class DovodiPodcastCategoryViewSet(ModelViewSet): serializer_class = DovodiPodcastCategorySerializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] - pagination_class = None + pagination_class = OptionalPagination def get_queryset(self): - queryset = PodcastCategory.objects.all().order_by("order", "title") + queryset = PodcastCategory.objects.all().order_by("-created_at", "-id") search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter(Q(title__icontains=search_query) | Q(slug__icontains=search_query)) + status_filter = self.request.query_params.get("status") + if status_filter in {"true", "false"}: + queryset = queryset.filter(status=status_filter == "true") return queryset @@ -389,14 +392,17 @@ class DovodiPodcastCollectionViewSet(ModelViewSet): serializer_class = DovodiPodcastCollectionSerializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] - pagination_class = None + pagination_class = OptionalPagination parser_classes = (MultiPartParser, FormParser, JSONParser) def get_queryset(self): - queryset = PodcastCollection.objects.all().order_by("display_position", "order", "title") + queryset = PodcastCollection.objects.all().order_by("-created_at", "-id") search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter(Q(title__icontains=search_query) | Q(slug__icontains=search_query)) + status_filter = self.request.query_params.get("status") + if status_filter in {"true", "false"}: + queryset = queryset.filter(status=status_filter == "true") return queryset @action(detail=True, methods=["post"], url_path="assign-items") diff --git a/apps/video/views.py b/apps/video/views.py index 9d305bb..dd46577 100644 --- a/apps/video/views.py +++ b/apps/video/views.py @@ -458,13 +458,16 @@ class DovodiVideoCategoryViewSet(ModelViewSet): serializer_class = DovodiVideoCategorySerializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] - pagination_class = None + pagination_class = OptionalPagination def get_queryset(self): - queryset = VideoCategory.objects.all().order_by("order", "title") + queryset = VideoCategory.objects.all().order_by("-created_at", "-id") search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter(Q(title__icontains=search_query) | Q(slug__icontains=search_query)) + status_filter = self.request.query_params.get("status") + if status_filter in {"true", "false"}: + queryset = queryset.filter(status=status_filter == "true") return queryset @@ -472,14 +475,17 @@ class DovodiVideoCollectionViewSet(ModelViewSet): serializer_class = DovodiVideoCollectionSerializer permission_classes = [IsAuthenticated] authentication_classes = [TokenAuthentication] - pagination_class = None + pagination_class = OptionalPagination parser_classes = (MultiPartParser, FormParser, JSONParser) def get_queryset(self): - queryset = VideoCollection.objects.all().order_by("display_position", "order", "title") + queryset = VideoCollection.objects.all().order_by("-created_at", "-id") search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter(Q(title__icontains=search_query) | Q(slug__icontains=search_query)) + status_filter = self.request.query_params.get("status") + if status_filter in {"true", "false"}: + queryset = queryset.filter(status=status_filter == "true") return queryset @action(detail=True, methods=["post"], url_path="assign-items")