Skip to content
Snippets Groups Projects
Verified Commit f2ac5b9f authored by Jan Maximilian Michal's avatar Jan Maximilian Michal
Browse files

Added a ViewSet for SubmissionType (boy that was easy)

parent 9306fdeb
No related branches found
No related tags found
1 merge request!17Refactor views to viewsets
Pipeline #
...@@ -2,7 +2,8 @@ import logging ...@@ -2,7 +2,8 @@ import logging
from rest_framework import serializers 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 from util.factories import GradyUserFactory
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -24,6 +25,13 @@ class FeedbackSerializer(serializers.ModelSerializer): ...@@ -24,6 +25,13 @@ class FeedbackSerializer(serializers.ModelSerializer):
fields = ('text', 'score') fields = ('text', 'score')
class SubmissionTypeSerializer(serializers.ModelSerializer):
class Meta:
model = SubmissionType
fields = ('name', 'full_score', 'description', 'solution')
class SubmissionSerializer(serializers.ModelSerializer): class SubmissionSerializer(serializers.ModelSerializer):
feedback = serializers.ReadOnlyField(source='feedback.text') feedback = serializers.ReadOnlyField(source='feedback.text')
score = serializers.ReadOnlyField(source='feedback.score') score = serializers.ReadOnlyField(source='feedback.score')
...@@ -46,11 +54,21 @@ class StudentSerializer(serializers.ModelSerializer): ...@@ -46,11 +54,21 @@ class StudentSerializer(serializers.ModelSerializer):
fields = ('name', 'user', 'exam', 'submissions') 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): class StudentSerializerForListView(serializers.ModelSerializer):
name = serializers.ReadOnlyField(source='user.fullname') name = serializers.ReadOnlyField(source='user.fullname')
user = serializers.ReadOnlyField(source='user.username') user = serializers.ReadOnlyField(source='user.username')
exam = serializers.ReadOnlyField(source='exam.module_reference') exam = serializers.ReadOnlyField(source='exam.module_reference')
submissions = SubmissionSerializer(many=True) submissions = SubmissionNoTextFieldsSerializer(many=True)
class Meta: class Meta:
model = Student model = Student
......
...@@ -8,6 +8,7 @@ from core import views ...@@ -8,6 +8,7 @@ from core import views
# Create a router and register our viewsets with it. # Create a router and register our viewsets with it.
router = DefaultRouter() router = DefaultRouter()
router.register(r'examtype', views.ExamApiViewSet) router.register(r'examtype', views.ExamApiViewSet)
router.register(r'submissiontype', views.SubmissionTypeApiView)
router.register(r'tutor', views.TutorApiViewSet) router.register(r'tutor', views.TutorApiViewSet)
router.register(r'student', views.StudentReviewerApiViewSet) router.register(r'student', views.StudentReviewerApiViewSet)
router.register(r'student-page', views.StudentSelfApiViewSet, base_name='student_page') router.register(r'student-page', views.StudentSelfApiViewSet, base_name='student_page')
......
...@@ -5,10 +5,11 @@ import logging ...@@ -5,10 +5,11 @@ import logging
from rest_framework import mixins, viewsets 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.permissions import IsReviewer, IsStudent
from core.serializers import (ExamSerializer, StudentSerializer, from core.serializers import (ExamSerializer, StudentSerializer,
StudentSerializerForListView, TutorSerializer) StudentSerializerForListView,
SubmissionTypeSerializer, TutorSerializer)
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -50,3 +51,9 @@ class StudentReviewerApiViewSet(viewsets.ReadOnlyModelViewSet): ...@@ -50,3 +51,9 @@ class StudentReviewerApiViewSet(viewsets.ReadOnlyModelViewSet):
permission_classes = (IsReviewer,) permission_classes = (IsReviewer,)
queryset = Student.objects.all() queryset = Student.objects.all()
serializer_class = StudentSerializerForListView 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment