Selaa lähdekoodia

模拟考试,考试报告

wushaodong 3 vuotta sitten
vanhempi
sitoutus
be4181b4ef

+ 18 - 0
apps/api/staff/mock/views.py

@@ -22,6 +22,7 @@ from apps.examination.exampaper.serializers import StaffExamPaperSerializer
 from apps.examination.examquestion.models import ExamQuestionOption, ExamQuestionFill
 from apps.practise.errorbook.models import ErrorBook
 
+
 class ExamPaperViewSet(CustomModelViewSet):
     permission_classes = [IsStaff, ]
     queryset = ExamPaper.objects.filter(delete=False, type=ExamPaper.MOCK)
@@ -41,6 +42,23 @@ class ExamLogViewSet(CustomModelViewSet):
         queryset = queryset.filter(user=self.request.user)
         return queryset
 
+    def retrieve(self, request, *args, **kwargs):
+        instance = self.get_object()
+        serializer = StaffExamLogRetrieveSerializer(instance)
+        answer_log = []
+        answer_logs = ExamAnswerLog.objects.filter(main=instance).order_by('detail__order')
+        for al in answer_logs:
+            item = {
+                'id':al.id,
+                'status':al.status,
+            }
+            answer_log.append(item)
+        result = {
+            'question': serializer.data,
+            'answer_log': answer_log,
+        }
+        return response_ok(result)
+
     def create(self, request, *args, **kwargs):
         exampaper_id = request.data.get('exampaper')
 

+ 26 - 1
apps/examination/exam/serializers.py

@@ -71,7 +71,7 @@ class StaffExamLogSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = ExamLog
-        fields = ('type', 'exampaper', 'user', 'exam_time', 'exampaper_name', 'exam_time', 'submit_time',
+        fields = ('id', 'type', 'exampaper', 'user', 'exam_time', 'exampaper_name', 'exam_time', 'submit_time',
                   'scores', 'right_count','wrong_count',)
 
     def get_right_count(self, obj):
@@ -80,6 +80,31 @@ class StaffExamLogSerializer(serializers.ModelSerializer):
     def get_wrong_count(self, obj):
         return obj.exampaper.question_total_count - (obj.single_answer_count + obj.multiple_answer_count + obj.fill_answer_count +  obj.judgment_answer_count)
 
+class StaffExamLogRetrieveSerializer(serializers.ModelSerializer):
+    exampaper_name = serializers.CharField(source='exampaper.name', read_only=True)
+    question_total_count = serializers.CharField(source='exampaper.question_total_count', read_only=True)
+    question_total_scores = serializers.CharField(source='exampaper.question_total_scores', read_only=True)
+
+    single_total_count = serializers.CharField(source='exampaper.single_total_count', read_only=True)
+    multiple_total_count = serializers.CharField(source='exampaper.multiple_total_count', read_only=True)
+    fill_total_count = serializers.CharField(source='exampaper.fill_total_count', read_only=True)
+    judgment_total_count = serializers.CharField(source='exampaper.judgment_total_count', read_only=True)
+
+    single_total_scores = serializers.CharField(source='exampaper.single_total_scores', read_only=True)
+    multiple_total_scores = serializers.CharField(source='exampaper.multiple_total_scores', read_only=True)
+    fill_total_scores = serializers.CharField(source='exampaper.fill_total_scores', read_only=True)
+    judgment_total_scores = serializers.CharField(source='exampaper.judgment_total_scores', read_only=True)
+
+    total_right_count = serializers.SerializerMethodField()
+
+    class Meta:
+        model = ExamLog
+        fields = "__all__"
+
+    def get_total_right_count(self, obj):
+        return obj.single_answer_count + obj.multiple_answer_count + obj.fill_answer_count +  obj.judgment_answer_count
+
+
 class ExamAnswerLogSerializer(serializers.ModelSerializer):
     item = serializers.SerializerMethodField()
 

+ 2 - 0
apps/examination/exampaper/models.py

@@ -49,10 +49,12 @@ class ExamPaper(models.Model):
     multiple_total_count = models.IntegerField(verbose_name=u'多选题总数量', default=0, editable=False)
     fill_total_count = models.IntegerField(verbose_name=u'填空题总数量', default=0, editable=False)
     judgment_total_count = models.IntegerField(verbose_name=u'判断题总数量', default=0, editable=False)
+
     single_total_scores = models.IntegerField(verbose_name=u'单选题总分数', default=0, editable=False)
     multiple_total_scores = models.IntegerField(verbose_name=u'多选题总分数', default=0, editable=False)
     fill_total_scores = models.IntegerField(verbose_name=u'填空题总分数', default=0, editable=False)
     judgment_total_scores = models.IntegerField(verbose_name=u'判断题总分数', default=0, editable=False)
+
     question_total_count  = models.IntegerField(verbose_name=u'试题总数量', default=0, editable=False)
     question_total_scores = models.IntegerField(verbose_name=u'试题总分数', default=0, editable=False)
 

+ 0 - 5
utils/pagination.py

@@ -11,12 +11,7 @@ class CustomPagination(pagination.PageNumberPagination):
     page_size = 10
 
     def get_paginated_response(self, data):
-        print(self.page_size_query_param)
         ps = self.get_page_size(self.request)
-        print(2222222222, self.page.paginator.count)
-        print(3333333, self.page.number)
-        print(444444, ps)
-        print(555555, len(data))
         return Response({
             'code':0,
             'showCount': ps,