refector: 调整一下结构

This commit is contained in:
caoqianming 2024-05-16 23:58:07 +08:00
parent 4de3363f1d
commit e8a86e6a26
1 changed files with 26 additions and 32 deletions

View File

@ -551,38 +551,32 @@ class ExamTestViewSet(PageOrNot, ModelViewSet):
@transaction.atomic
def create(self, request, *args, **kwargs):
serializer = MoniTestSerializer(data = request.data)
if serializer.is_valid():
instance = serializer.save(consumer = request.user)
if 'questions' in request.data:
questions = []
for i in request.data['questions']:
question = {}
question['question'] = i['id']
question['examtest'] = instance.id
question['score'] = i['score']
if 'user_answer' in i:
question['user_answer'] = i['user_answer']
question['is_right'] = i['is_right']
questions.append(question)
serializer_detail = AnswerDetailCreateSerializer(data=questions, many=True)
if serializer_detail.is_valid():
serializer_detail.save()
# 关联正式考试如有
if request.data.get('exam', None):
exam = Exam.objects.get(pk=request.data['exam'])
instance.exam = exam
instance.save()
# 自动发证
if exam.auto_issue and instance.is_pass:
issue(instance)
return Response(MoniTestSerializer(instance).data,status=status.HTTP_200_OK)
else:
return Response(serializer_detail.errors)
else:
return Response({'error':'答题记录不存在'})
else:
return Response(serializer.errors)
serializer.is_valid(raise_exception=True)
instance = serializer.save(consumer = request.user)
if 'questions' in request.data:
questions = []
for i in request.data['questions']:
question = {}
question['question'] = i['id']
question['examtest'] = instance.id
question['score'] = i['score']
if 'user_answer' in i:
question['user_answer'] = i['user_answer']
question['is_right'] = i['is_right']
questions.append(question)
serializer_detail = AnswerDetailCreateSerializer(data=questions, many=True)
serializer_detail.is_valid(raise_exception=True)
serializer_detail.save()
# 关联正式考试如有
if request.data.get('exam', None):
exam = Exam.objects.get(pk=request.data['exam'])
instance.exam = exam
instance.save()
# 自动发证
if exam.auto_issue and instance.is_pass:
issue(instance)
return Response(MoniTestSerializer(instance).data,status=status.HTTP_200_OK)
raise ParseError('答题记录不存在')
@action(methods=['get'], detail=False,
url_path='export', url_name='export_test', perms_map=[{'*':'export_test'}])