diff --git a/unisportomat/quiz/views.py b/unisportomat/quiz/views.py index 4694b7be8abb8ac98175cf88f7f6fa617cf93ab1..1ee9192b4c7b9bcc140b39c61e3152b01d894fec 100644 --- a/unisportomat/quiz/views.py +++ b/unisportomat/quiz/views.py @@ -8,6 +8,7 @@ from rest_framework.views import APIView from rest_framework.response import Response from django.shortcuts import get_object_or_404 from django.http import HttpResponse +from django.db.models.functions import Lower from .pagination import PageNumberWithPageSizePagination from .course_scraper.course_scraper import scraping @@ -62,23 +63,30 @@ class SmallSportListView(viewsets.ViewSet): paginator = PageNumberWithPageSizePagination() order_by_dict = { - "id": "pk", - "-id": "-pk", - "name": "name", - "-name": "-name", - "url": "url", - "-url": "-url", - "is_filled": "pk", - "-is_filled": "-pk", + "id": ("pk", False), + "-id": ("pk", True), + "name": ("name", False), + "-name": ("name", True), + "url": ("url", False), + "-url": ("url", True), + "is_filled": ("pk", False), + "-is_filled": ("pk", True), } - order_by = "pk" + order_by = ("pk", False) if "ordering" in request.query_params.keys(): order_by = order_by_dict[request.query_params.get("ordering")] # Maybe care for is_filled ordering in the Future? + if order_by[1]: + sports = Sport.objects.filter(currently_active=True).order_by( + Lower(order_by[0]).desc() + ) + else: + sports = Sport.objects.filter(currently_active=True).order_by( + Lower(order_by[0]) + ) - sports = Sport.objects.all().order_by(order_by) sports = paginator.paginate_queryset(sports, request) is_filled_tuples = [] @@ -241,16 +249,19 @@ class IncompleteSportView(APIView): """ paginator = PageNumberWithPageSizePagination() - queryset = Sport.objects.all().order_by("name") - queryset = paginator.paginate_queryset(queryset, request) + queryset = Sport.objects.filter(currently_active=True).order_by("name") incomplete_sport_list = [] - for sport in Sport.objects.filter(currently_active=True).iterator(): + for sport in queryset: if not sport.is_filled(): incomplete_sport_list.append(sport) + incomplete_sport_list = paginator.paginate_queryset( + incomplete_sport_list, request + ) + response = IncompleteSportSerializer(incomplete_sport_list) return paginator.get_paginated_response(response.data) diff --git a/unisportomat/unisportomat/urls.py b/unisportomat/unisportomat/urls.py index e5cac8bb035724e0dfb02882c69df03641225698..866392b58022722f1729f376cea40a901eb304f6 100644 --- a/unisportomat/unisportomat/urls.py +++ b/unisportomat/unisportomat/urls.py @@ -27,14 +27,14 @@ router.register(r"activity", views.ActivityView, "activity") urlpatterns = [ path("admin/", admin.site.urls), path( - "api/admin/sport/incomplete/", + "api/admin/sport-incomplete/", views.IncompleteSportView.as_view(), name="incomplete", ), - path("api/admin/sport/archive/", views.SportArchiveView.as_view(), name="archive"), - path("api/admin/sport/scraper/", views.ScraperView.as_view(), name="scraper"), + path("api/admin/sport-archive/", views.SportArchiveView.as_view(), name="archive"), + path("api/admin/sport-scraper/", views.ScraperView.as_view(), name="scraper"), path("api/admin/criteria/", views.CriteriaView.as_view(), name="criteria"), - path("api/admin/question/order", views.QuestionOrderView.as_view(), name="order"), + path("api/admin/question-order", views.QuestionOrderView.as_view(), name="order"), path("api/admin/greeting/", views.GreetingView.as_view(), name="greeting"), path("api/admin/end/", views.EndView.as_view(), name="end"), path("api/admin/", include(router.urls)),