فهرست منبع

模拟考试,考试报告

wushaodong 3 سال پیش
والد
کامیت
1d089bfdc3
3فایلهای تغییر یافته به همراه43 افزوده شده و 11 حذف شده
  1. 1 1
      apps/api/staff/mock/views.py
  2. 1 0
      apps/api/staff/urls.py
  3. 41 10
      apps/examination/exam/serializers.py

+ 1 - 1
apps/api/staff/mock/views.py

@@ -56,6 +56,7 @@ class ExamLogViewSet(CustomModelViewSet):
         result = {
             'question': serializer.data,
             'answer_log': answer_log,
+            'ranks': [],
         }
         return response_ok(result)
 
@@ -64,7 +65,6 @@ class ExamLogViewSet(CustomModelViewSet):
 
         try:
             with transaction.atomic():
-                exampaper = ExamPaper.getById(exampaper_id)
                 data = {
                     'type': ExamPaper.MOCK,
                     'exampaper': exampaper_id,

+ 1 - 0
apps/api/staff/urls.py

@@ -13,4 +13,5 @@ urlpatterns = [
     url(r'^practise/', include('apps.api.staff.practise.urls')),
     url(r'^mock/', include('apps.api.staff.mock.urls')),
     url(r'^errorbook/', include('apps.api.staff.errorbook.urls')),
+    url(r'^exam/', include('apps.api.staff.exam.urls')),
 ]

+ 41 - 10
apps/examination/exam/serializers.py

@@ -85,17 +85,8 @@ class StaffExamLogRetrieveSerializer(serializers.ModelSerializer):
     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()
+    answer_items = serializers.SerializerMethodField()
 
     class Meta:
         model = ExamLog
@@ -104,6 +95,46 @@ class StaffExamLogRetrieveSerializer(serializers.ModelSerializer):
     def get_total_right_count(self, obj):
         return obj.single_answer_count + obj.multiple_answer_count + obj.fill_answer_count +  obj.judgment_answer_count
 
+    def get_answer_items(self, obj):
+        data = []
+        if obj.exampaper.single_total_count:
+            item = {
+                'name': '单选题',
+                'total_count': obj.exampaper.single_total_count,
+                'total_right': obj.single_answer_count,
+                'total_scores': obj.exampaper.single_total_scores,
+                'answer_scores': obj.single_answer_scores,
+            }
+            data.append(item)
+        if obj.exampaper.multiple_total_count:
+            item = {
+                'name': '多选题',
+                'total_count': obj.exampaper.multiple_total_count,
+                'total_right': obj.multiple_answer_count,
+                'total_scores': obj.exampaper.multiple_total_scores,
+                'answer_scores': obj.multiple_answer_scores,
+            }
+            data.append(item)
+        if obj.exampaper.fill_total_count:
+            item = {
+                'name': '填空题',
+                'total_count': obj.exampaper.fill_total_count,
+                'total_right': obj.fill_answer_count,
+                'total_scores': obj.exampaper.fill_total_scores,
+                'answer_scores': obj.fill_answer_scores,
+            }
+            data.append(item)
+        if obj.exampaper.judgment_total_count:
+            item = {
+                'name': '判断题',
+                'total_count': obj.exampaper.judgment_total_count,
+                'total_right': obj.judgment_answer_count,
+                'total_scores': obj.exampaper.judgment_total_scores,
+                'answer_scores': obj.judgment_answer_scores,
+            }
+            data.append(item)
+        return data
+
 
 class ExamAnswerLogSerializer(serializers.ModelSerializer):
     item = serializers.SerializerMethodField()