jiaweiqi 3 rokov pred
rodič
commit
85cadf72a2

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

@@ -5,7 +5,7 @@ from rest_framework.routers import SimpleRouter
 from .views import *
 
 urlpatterns = [
-
+    url(r'^dict/$', DictView.as_view()),
 ]
 
 router = SimpleRouter()

+ 14 - 0
apps/api/staff/errorbook/views.py

@@ -1,11 +1,15 @@
 # coding=utf-8
 
 from rest_framework.viewsets import ReadOnlyModelViewSet
+from rest_framework.views import APIView
 from utils import response_ok, response_error
 from apps.system.models import SysLog
 from utils.permission import IsAdministrator, IsStaff
+from apps.practise.errorbook.models import ErrorBook
 from apps.practise.errorbook.filters import *
 from apps.practise.errorbook.serializers import *
+from apps.foundation.models import Subject, Chapter
+from apps.foundation.serializers import SubjectSimpleSerializer, ChapterSimpleSerializer
 
 
 class ErrorBookViewSet(ReadOnlyModelViewSet):
@@ -18,3 +22,13 @@ class ErrorBookViewSet(ReadOnlyModelViewSet):
         queryset = queryset.filter(create_user=self.request.user)
         f = ErrorBookFilter(self.request.GET, queryset=queryset)
         return f.qs
+
+
+class DictView(APIView):
+    permission_classes = [IsStaff, ]
+
+    def get(self, request):
+        ret = {
+            'subject': SubjectSimpleSerializer(Subject.objects.filter(delete=False), many=True).data
+        }
+        return response_ok(ret)

+ 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'^knowledge/', include('apps.api.staff.knowledge.urls')),
 ]

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

@@ -67,33 +67,33 @@ class StaffExamLogSerializer(serializers.ModelSerializer):
         model = ExamLog
         fields = "__all__"
 
-class ExamAnswerLogSerializer(serializers.ModelSerializer):
+class ExamAnswerLogSimpleSerializer(serializers.ModelSerializer):
     item = serializers.SerializerMethodField()
 
     class Meta:
         model = ExamAnswerLog
-        fields = '__all__'
+        fields = ('item', )
 
     def get_item(self, obj):
         if obj.detail.question.type <= ExamQuestion.MULTIPLE:
-            rows = ExamAnswerOptionLog.objects.filter(main=ExamAnswerLog)
-            return ExamAnswerOptionLogSerializer(rows, many=True).data
+            rows = ExamAnswerOptionLog.objects.filter(main=obj)
+            return ExamAnswerOptionLogSimpleSerializer(rows, many=True).data
         elif obj.detail.question.type == ExamQuestion.FILL:
-            rows = ExamAnswerFillLog.objects.filter(main=ExamAnswerLog)
-            return ExamAnswerFillLogSerializer(rows, many=True).data
+            rows = ExamAnswerFillLog.objects.filter(main=obj)
+            return ExamAnswerFillLogSimpleSerializer(rows, many=True).data
         else:
             return []
 
 
-class ExamAnswerOptionLogSerializer(serializers.ModelSerializer):
+class ExamAnswerOptionLogSimpleSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = ExamAnswerOptionLog
-        fields = '__all__'
+        fields = ('option', )
 
 
-class ExamAnswerFillLogSerializer(serializers.ModelSerializer):
+class ExamAnswerFillLogSimpleSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = ExamAnswerFillLog
-        fields = '__all__'
+        fields = ('content', 'order', )

+ 39 - 1
apps/examination/examquestion/serializers.py

@@ -118,4 +118,42 @@ class ExamQuestionFeedbackSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = ExamQuestionFeedback
-        fields = "__all__"
+        fields = "__all__"
+
+
+class ExamQuestionSimpleSerializer(serializers.ModelSerializer):
+    judgment = serializers.SerializerMethodField()
+    items = serializers.SerializerMethodField()
+
+    def get_items(self, obj):
+        if obj.type <= ExamQuestion.MULTIPLE:
+            rows = ExamQuestionOption.objects.filter(main=obj, delete=False)
+            return ExamQuestionOptionSimpleSerializer(rows, many=True).data
+        elif obj.type == ExamQuestion.FILL:
+            rows = ExamQuestionFill.objects.filter(main=obj, delete=False)
+            return ExamQuestionFillSimpleSerializer(rows, many=True).data
+        else:
+            return []
+
+    def get_judgment(self, obj):
+        if obj.judgment:
+            return "1"
+        return "0"
+
+    class Meta:
+        model = ExamQuestion
+        fields = ('title', 'judgment', 'items', 'type', 'analysis', )
+
+
+class ExamQuestionOptionSimpleSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = ExamQuestionOption
+        fields = ('content', 'right', 'id', )
+
+
+class ExamQuestionFillSimpleSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = ExamQuestionFill
+        fields = ('content', 'order', )

+ 6 - 6
apps/practise/errorbook/serializers.py

@@ -2,21 +2,21 @@
 
 from rest_framework import serializers
 from .models import ErrorBook
-from apps.examination.examquestion.serializers import ExamQuestionSerializer
-from apps.examination.exam.serializers import ExamAnswerLogSerializer
+from apps.examination.examquestion.serializers import ExamQuestionSimpleSerializer
+from apps.examination.exam.serializers import ExamAnswerLogSimpleSerializer
 
 
 class ErrorBookSerializer(serializers.ModelSerializer):
     question = serializers.SerializerMethodField()
     answer = serializers.SerializerMethodField()
-    exam_name = serializers.CharField(source='last_answer_log.main.exam.name', read_only=True)
+    exam_name = serializers.CharField(source='last_answer_log.main.exampaper.name', read_only=True)
 
     class Meta:
         model = ErrorBook
-        fields = "__all__"
+        fields = ('last_time', 'wrong_count', 'exam_name', 'question', 'answer', )
 
     def get_question(self, obj):
-        return ExamQuestionSerializer(obj.question).data
+        return ExamQuestionSimpleSerializer(obj.question).data
 
     def get_answer(self, obj):
-        return ExamAnswerLogSerializer(obj.last_answer_log).data
+        return ExamAnswerLogSimpleSerializer(obj.last_answer_log).data