Skip to content
Snippets Groups Projects
Commit 2cc91192 authored by robinwilliam.hundt's avatar robinwilliam.hundt
Browse files

Added optional fields mixin for serializers

parent a42a0d4a
No related branches found
No related tags found
1 merge request!25WIP: Resolve "A new student overview page with Vue.js"
import logging
from drf_dynamic_fields import DynamicFieldsMixin
from rest_framework import serializers
from core.models import (ExamType, Feedback, Student, Submission,
......@@ -10,7 +11,11 @@ log = logging.getLogger(__name__)
user_factory = GradyUserFactory()
class ExamSerializer(serializers.ModelSerializer):
class DynamicFieldsModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
pass
class ExamSerializer(DynamicFieldsModelSerializer):
class Meta:
model = ExamType
......@@ -18,21 +23,21 @@ class ExamSerializer(serializers.ModelSerializer):
'pass_score', 'pass_only',)
class FeedbackSerializer(serializers.ModelSerializer):
class FeedbackSerializer(DynamicFieldsModelSerializer):
class Meta:
model = Feedback
fields = ('text', 'score')
class SubmissionTypeSerializer(serializers.ModelSerializer):
class SubmissionTypeSerializer(DynamicFieldsModelSerializer):
class Meta:
model = SubmissionType
fields = ('name', 'full_score', 'description', 'solution')
class SubmissionSerializer(serializers.ModelSerializer):
class SubmissionSerializer(DynamicFieldsModelSerializer):
feedback = serializers.ReadOnlyField(source='feedback.text')
score = serializers.ReadOnlyField(source='feedback.score')
type_id = serializers.ReadOnlyField(source='type.id')
......@@ -41,10 +46,11 @@ class SubmissionSerializer(serializers.ModelSerializer):
class Meta:
model = Submission
fields = ('type_id', 'type_name', 'text', 'feedback', 'score', 'full_score')
fields = ('type_id', 'type_name', 'text',
'feedback', 'score', 'full_score')
class StudentSerializer(serializers.ModelSerializer):
class StudentSerializer(DynamicFieldsModelSerializer):
name = serializers.ReadOnlyField(source='user.fullname')
user = serializers.ReadOnlyField(source='user.username')
exam = ExamSerializer()
......@@ -55,7 +61,7 @@ class StudentSerializer(serializers.ModelSerializer):
fields = ('name', 'user', 'exam', 'submissions')
class SubmissionNoTextFieldsSerializer(serializers.ModelSerializer):
class SubmissionNoTextFieldsSerializer(DynamicFieldsModelSerializer):
score = serializers.ReadOnlyField(source='feedback.score')
type = serializers.ReadOnlyField(source='type.name')
full_score = serializers.ReadOnlyField(source='type.full_score')
......@@ -65,7 +71,7 @@ class SubmissionNoTextFieldsSerializer(serializers.ModelSerializer):
fields = ('type', 'score', 'full_score')
class StudentSerializerForListView(serializers.ModelSerializer):
class StudentSerializerForListView(DynamicFieldsModelSerializer):
name = serializers.ReadOnlyField(source='user.fullname')
user = serializers.ReadOnlyField(source='user.username')
exam = serializers.ReadOnlyField(source='exam.module_reference')
......@@ -76,7 +82,7 @@ class StudentSerializerForListView(serializers.ModelSerializer):
fields = ('name', 'user', 'exam', 'submissions')
class TutorSerializer(serializers.ModelSerializer):
class TutorSerializer(DynamicFieldsModelSerializer):
username = serializers.CharField(source='user.username')
feedback_count = serializers.IntegerField(source='get_feedback_count',
read_only=True)
......
......@@ -40,6 +40,7 @@ INSTALLED_APPS = [
'django_extensions',
'rest_framework',
'corsheaders',
'drf_dynamic_fields',
'core',
]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment