From e8a86e6a26dae8bd3199f15431d552807722a7d4 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 May 2024 23:58:07 +0800 Subject: [PATCH] =?UTF-8?q?refector:=20=E8=B0=83=E6=95=B4=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_server/examtest/views.py | 58 ++++++++++++++++------------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 44975a8..d6c3211 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -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'}])