|
@@ -1,7 +1,8 @@
|
|
|
# coding=utf-8
|
|
|
|
|
|
from rest_framework import serializers
|
|
|
-from .models import Exam, ExamLog
|
|
|
+from .models import Exam, ExamLog, ExamAnswerLog, ExamAnswerOptionLog, ExamAnswerFillLog
|
|
|
+from apps.examination.examquestion.models import ExamQuestion
|
|
|
from utils.exceptions import CustomError
|
|
|
|
|
|
class ExamSerializer(serializers.ModelSerializer):
|
|
@@ -58,4 +59,36 @@ class FormalExamLogSerializer(serializers.ModelSerializer):
|
|
|
|
|
|
class Meta:
|
|
|
model = ExamLog
|
|
|
- fields = "__all__"
|
|
|
+ fields = "__all__"
|
|
|
+
|
|
|
+
|
|
|
+class ExamAnswerLogSerializer(serializers.ModelSerializer):
|
|
|
+ item = serializers.SerializerMethodField()
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = ExamAnswerLog
|
|
|
+ fields = '__all__'
|
|
|
+
|
|
|
+ def get_item(self, obj):
|
|
|
+ if obj.detail.question.type <= ExamQuestion.MULTIPLE:
|
|
|
+ rows = ExamAnswerOptionLog.objects.filter(main=ExamAnswerLog)
|
|
|
+ return ExamAnswerOptionLogSerializer(rows, many=True).data
|
|
|
+ elif obj.detail.question.type == ExamQuestion.FILL:
|
|
|
+ rows = ExamAnswerFillLog.objects.filter(main=ExamAnswerLog)
|
|
|
+ return ExamAnswerFillLogSerializer(rows, many=True).data
|
|
|
+ else:
|
|
|
+ return []
|
|
|
+
|
|
|
+
|
|
|
+class ExamAnswerOptionLogSerializer(serializers.ModelSerializer):
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = ExamAnswerOptionLog
|
|
|
+ fields = '__all__'
|
|
|
+
|
|
|
+
|
|
|
+class ExamAnswerFillLogSerializer(serializers.ModelSerializer):
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ model = ExamAnswerFillLog
|
|
|
+ fields = '__all__'
|