From 593c0d35f15230907580d9dc6a9ccf5a836994af Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 17 Mar 2021 21:26:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E8=80=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_server/examtest/serializers.py | 2 +- test_server/examtest/views.py | 37 ++++++++++++++++++++++++++++- test_server/x.py | 16 ++++++++++++- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/test_server/examtest/serializers.py b/test_server/examtest/serializers.py index c97819b..50beeba 100644 --- a/test_server/examtest/serializers.py +++ b/test_server/examtest/serializers.py @@ -41,7 +41,7 @@ class WorkScopeSerializer(serializers.ModelSerializer): class MoniTestSerializer(serializers.ModelSerializer): """ - 模考序列化 + 考试序列化 """ start_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S") end_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S") diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 7b460f1..1e0eedd 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -98,7 +98,38 @@ class ExamViewSet(ModelViewSet): 生成考试卷 """ obj = self.get_object() - pass + workscope = obj.workscope + if workscope.name in ['医学Ⅲ类', '非医学Ⅲ类']: + ret['name'] = '正式考试' + datetime.now().strftime('%Y%m%d%H%M') + ret['type'] = '正式考试' # 正式考试 + ret['exam'] = obj.id + ret['workscope'] = workscope.id + ret['limit'] = 60 + ret['total_score'] = 120 + ret['pass_score'] = 90 + ret['danxuan_count'] = 40 + ret['danxuan_score'] = 2 + ret['duoxuan_count'] = 10 + ret['duoxuan_score'] = 4 + question_queryset = Question.objects.none() + questioncats = workscope.questioncat.order_by('type', 'create_time') + if questioncats.count() == 3: + queryset = Question.objects.filter(is_delete=0) + a1_set = queryset.filter(questioncat=questioncats[0], type='单选').order_by('?')[:12] + a2_set = queryset.filter(questioncat=questioncats[1], type='单选').order_by('?')[:12] + a3_set = queryset.filter(questioncat=questioncats[2], type='单选').order_by('?')[:16] + b1_set = queryset.filter(questioncat=questioncats[0], type='多选').order_by('?')[:3] + b2_set = queryset.filter(questioncat=questioncats[1], type='多选').order_by('?')[:3] + b3_set = queryset.filter(questioncat=questioncats[2], type='多选').order_by('?')[:4] + question_queryset = question_queryset|a1_set|a2_set|a3_set|b1_set|b2_set|b3_set + questions = QuestionSerializer(instance=question_queryset.order_by('type'),many=True).data + for i in questions: + if i['type'] == '单选': + i['total_score'] = 2 + elif i['type'] == '多选': + i['total_score'] = 4 + ret['questions'] = questions + return Response(ret) @@ -375,6 +406,10 @@ class ExamTestViewSet(ModelViewSet): serializer_detail = AnswerDetailCreateSerializer(data=questions, many=True) if serializer_detail.is_valid(): serializer_detail.save() + # 关联正式考试如有 + if request.data.get('exam', None): + instance.exam = Exam.objects.get(pk=request.data['exam']) + instance.save() return Response(MoniTestSerializer(instance).data,status=status.HTTP_200_OK) else: return Response(serializer_detail.errors) diff --git a/test_server/x.py b/test_server/x.py index c0d6a6f..c6b7ff9 100644 --- a/test_server/x.py +++ b/test_server/x.py @@ -1 +1,15 @@ -from sympy import * \ No newline at end of file +from sympy import * + +x1 = Symbol('x1') +x2 = Symbol('x2') +x3 = Symbol('x3') +y1 = Symbol('y1') +y2 = Symbol('y2') +y3 = Symbol('y3') +f = [ + y1+y2+y3-10, + x1+x2+x3-40, + 2*x1+4*y1-36, + 2*x2+4*y2-36, +] +print(solve(f)) \ No newline at end of file