diff --git a/unisportomat/quiz/pagination.py b/unisportomat/quiz/pagination.py index 058ca4b7412d854a8e1e25e17020e2a2f03d0983..385a0610f6095cde89299ff5e4ebd25251083f6b 100644 --- a/unisportomat/quiz/pagination.py +++ b/unisportomat/quiz/pagination.py @@ -5,7 +5,6 @@ or be given globally via settings.py. """ from rest_framework.pagination import PageNumberPagination -from rest_framework.response import Response class PageNumberWithPageSizePagination(PageNumberPagination): diff --git a/unisportomat/quiz/serializers.py b/unisportomat/quiz/serializers.py index 37b11e95f8c752fd069ef40970741f0b02aaec90..e59e4ffb30be157fdec7a0d6de59d5540737075a 100644 --- a/unisportomat/quiz/serializers.py +++ b/unisportomat/quiz/serializers.py @@ -22,7 +22,6 @@ class QuestionListSerializer(serializers.ModelSerializer): class Meta: model = Question - fields = ("id", "text", "criterion") @@ -72,6 +71,7 @@ class SingleSportSerializer(serializers.BaseSerializer): criterion_data["name"] = criterion.name # The iterator iterates over the Criterions connected, and not the criterion connection itself, so we need to get that one again + # TODO: Use get_rating of the Sport object criterion_data["value"] = CriterionRating.objects.get( criterion=criterion.pk, sport=sport.pk ).rating diff --git a/unisportomat/quiz/views.py b/unisportomat/quiz/views.py index 838913890b8df058f4bd1f97e3d0338719fa8724..7e89f0d7523b224c408442d646719983df64c46a 100644 --- a/unisportomat/quiz/views.py +++ b/unisportomat/quiz/views.py @@ -6,6 +6,7 @@ Defines the views for the API from rest_framework import viewsets from rest_framework.views import APIView from rest_framework.response import Response +from django.shortcuts import get_object_or_404 from django.http import JsonResponse from .pagination import PageNumberWithPageSizePagination @@ -92,6 +93,8 @@ class SmallSportListView(viewsets.ViewSet): filled_criteria_pks = [] + # TODO: Change the way that unfilled Criteria are detected (look for value -1) + # TODO: is_filled as function of sport # Get pks of Criteria which are connected to the sport for criterion in sport.criteria_ratings.iterator(): filled_criteria_pks.append(criterion.pk) @@ -140,16 +143,7 @@ class SmallSportListView(viewsets.ViewSet): # GET for api/admin/sport/<id>/ def retrieve(self, request, pk=None): - try: - sport = Sport.objects.get(pk=pk) - except: - return JsonResponse( - { - "status_code": 404, - "error": f"No Sport with ID {pk} found", - }, - status=404, - ) + sport = get_object_or_404(Sport, pk=pk) return Response(SingleSportSerializer(sport).data)