From f2ac5b9f5b1438f52284662e7ac8ebd1ad2cffbc Mon Sep 17 00:00:00 2001 From: janmax <j.michal@stud.uni-goettingen.de> Date: Sun, 26 Nov 2017 22:54:19 +0100 Subject: [PATCH] Added a ViewSet for SubmissionType (boy that was easy) --- backend/core/serializers.py | 22 ++++++++++++++++++++-- backend/core/urls.py | 1 + backend/core/views.py | 11 +++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/backend/core/serializers.py b/backend/core/serializers.py index 08de11b0..56ec29e3 100644 --- a/backend/core/serializers.py +++ b/backend/core/serializers.py @@ -2,7 +2,8 @@ import logging from rest_framework import serializers -from core.models import ExamType, Feedback, Student, Submission, Tutor +from core.models import (ExamType, Feedback, Student, Submission, + SubmissionType, Tutor) from util.factories import GradyUserFactory log = logging.getLogger(__name__) @@ -24,6 +25,13 @@ class FeedbackSerializer(serializers.ModelSerializer): fields = ('text', 'score') +class SubmissionTypeSerializer(serializers.ModelSerializer): + + class Meta: + model = SubmissionType + fields = ('name', 'full_score', 'description', 'solution') + + class SubmissionSerializer(serializers.ModelSerializer): feedback = serializers.ReadOnlyField(source='feedback.text') score = serializers.ReadOnlyField(source='feedback.score') @@ -46,11 +54,21 @@ class StudentSerializer(serializers.ModelSerializer): fields = ('name', 'user', 'exam', 'submissions') +class SubmissionNoTextFieldsSerializer(serializers.ModelSerializer): + score = serializers.ReadOnlyField(source='feedback.score') + type = serializers.ReadOnlyField(source='type.name') + full_score = serializers.ReadOnlyField(source='type.full_score') + + class Meta: + model = Submission + fields = ('type', 'score', 'full_score') + + class StudentSerializerForListView(serializers.ModelSerializer): name = serializers.ReadOnlyField(source='user.fullname') user = serializers.ReadOnlyField(source='user.username') exam = serializers.ReadOnlyField(source='exam.module_reference') - submissions = SubmissionSerializer(many=True) + submissions = SubmissionNoTextFieldsSerializer(many=True) class Meta: model = Student diff --git a/backend/core/urls.py b/backend/core/urls.py index f3dde516..a5d9818d 100644 --- a/backend/core/urls.py +++ b/backend/core/urls.py @@ -8,6 +8,7 @@ from core import views # Create a router and register our viewsets with it. router = DefaultRouter() router.register(r'examtype', views.ExamApiViewSet) +router.register(r'submissiontype', views.SubmissionTypeApiView) router.register(r'tutor', views.TutorApiViewSet) router.register(r'student', views.StudentReviewerApiViewSet) router.register(r'student-page', views.StudentSelfApiViewSet, base_name='student_page') diff --git a/backend/core/views.py b/backend/core/views.py index 690d6cfb..084a4a3e 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -5,10 +5,11 @@ import logging from rest_framework import mixins, viewsets -from core.models import ExamType, Student, Tutor +from core.models import ExamType, Student, SubmissionType, Tutor from core.permissions import IsReviewer, IsStudent from core.serializers import (ExamSerializer, StudentSerializer, - StudentSerializerForListView, TutorSerializer) + StudentSerializerForListView, + SubmissionTypeSerializer, TutorSerializer) log = logging.getLogger(__name__) @@ -50,3 +51,9 @@ class StudentReviewerApiViewSet(viewsets.ReadOnlyModelViewSet): permission_classes = (IsReviewer,) queryset = Student.objects.all() serializer_class = StudentSerializerForListView + + +class SubmissionTypeApiView(viewsets.ReadOnlyModelViewSet): + """ Gets a list or a detail view of a single SubmissionType """ + queryset = SubmissionType.objects.all() + serializer_class = SubmissionTypeSerializer -- GitLab