diff --git a/unisportomat/quiz/serializers.py b/unisportomat/quiz/serializers.py index 9756a8e190171e12071bfbd365b05c6dc05813f3..1ebb49981f473d68abf5cb15b25ebecf91aeb712 100644 --- a/unisportomat/quiz/serializers.py +++ b/unisportomat/quiz/serializers.py @@ -199,3 +199,21 @@ class CriteriaSerializer(serializers.BaseSerializer): criteria_list.append(criterion_dict) return criteria_list + + +class SmallQuestionListSerializer(serializers.BaseSerializer): + def to_representation(self, questions): + + question_list = [] + + for question in questions: + question_list.append( + { + "id": question.pk, + "text_de": question.text_de, + "text_en": question.text_en, + "criterion": question.criterion.name, + } + ) + + return question_list diff --git a/unisportomat/quiz/views.py b/unisportomat/quiz/views.py index 8d7e0cf870f1e7abe163f32f9f1b45b1dde0a76a..4038550a19a2616b1d231ee7c8df9aea823a0464 100644 --- a/unisportomat/quiz/views.py +++ b/unisportomat/quiz/views.py @@ -18,8 +18,10 @@ from .serializers import ( SingleSportSerializer, CriteriaSerializer, IncompleteSportSerializer, + SmallQuestionListSerializer, ) from .models import Sport, Criterion, Question +from .pagination import PageNumberWithPageSizePagination # Create your views here. @@ -260,3 +262,32 @@ class CriteriaView(APIView): response = CriteriaSerializer(data) return Response(response.data) + + +class SmallQuestionListView(viewsets.ViewSet): + """ + Viewset for Handling Question Lists and Questions + """ + + # List GET + def list(self, request): + """ + api/admin/question GET + Returns a Paginated List of all Questions with their ID, German and English Text, and Criterion + """ + + paginator = PageNumberWithPageSizePagination() + + questions = Question.objects.all().order_by("pk") + questions = paginator.paginate_queryset(questions, request) + + response = SmallQuestionListSerializer(questions) + + return paginator.get_paginated_response(response.data) + + # List POST + def create(self, request): + """ + api/admin/question POST + Takes Values of a new Question and Creates a Question and its corresponding Criterion + """ diff --git a/unisportomat/unisportomat/urls.py b/unisportomat/unisportomat/urls.py index 388d94e57dc1440659c8320eca2485f5bd78fee9..d0a61c876b3c342880a2adc8532d63b29eccdd5b 100644 --- a/unisportomat/unisportomat/urls.py +++ b/unisportomat/unisportomat/urls.py @@ -23,6 +23,7 @@ router.register(r"sport-list", views.SportListView, "sport-list") router.register(r"criterion-list", views.CriterionListView, "criterion-list") router.register(r"question-list", views.QuestionListView, "question-list") router.register(r"small-sport-list", views.SmallSportListView, "small-sport-list") +router.register(r"question", views.SmallQuestionListView, "question") urlpatterns = [ path("admin/", admin.site.urls),