正式考试

This commit is contained in:
caoqianming 2021-03-17 21:26:16 +08:00
parent ea27424e60
commit 593c0d35f1
3 changed files with 52 additions and 3 deletions

View File

@ -41,7 +41,7 @@ class WorkScopeSerializer(serializers.ModelSerializer):
class MoniTestSerializer(serializers.ModelSerializer): class MoniTestSerializer(serializers.ModelSerializer):
""" """
考序列化 序列化
""" """
start_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S") start_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")
end_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S") end_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")

View File

@ -98,7 +98,38 @@ class ExamViewSet(ModelViewSet):
生成考试卷 生成考试卷
""" """
obj = self.get_object() 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) serializer_detail = AnswerDetailCreateSerializer(data=questions, many=True)
if serializer_detail.is_valid(): if serializer_detail.is_valid():
serializer_detail.save() 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) return Response(MoniTestSerializer(instance).data,status=status.HTTP_200_OK)
else: else:
return Response(serializer_detail.errors) return Response(serializer_detail.errors)

View File

@ -1 +1,15 @@
from sympy import * 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))