From 78546c70716f9fb214b51f3dab543e11dc27ae45 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 May 2024 23:55:17 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=80=83?= =?UTF-8?q?=E8=AF=95=E6=98=AF=E5=90=A6=E9=80=9A=E8=BF=87=E7=9A=84=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_client/src/views/analyse/examtest2.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test_client/src/views/analyse/examtest2.vue b/test_client/src/views/analyse/examtest2.vue index 820a728..39ba084 100644 --- a/test_client/src/views/analyse/examtest2.vue +++ b/test_client/src/views/analyse/examtest2.vue @@ -70,6 +70,12 @@ + + + From 4de3363f1d8cfbf578d8afdc202c0b71dd24a80d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 May 2024 23:55:52 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20=E6=8B=A6=E6=88=AA=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_mini/utils/request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_mini/utils/request.js b/test_mini/utils/request.js index 8c498f2..c28a49e 100644 --- a/test_mini/utils/request.js +++ b/test_mini/utils/request.js @@ -19,7 +19,7 @@ function request(url, method, data) { } else { var msg = '请求错误' - if(res.data.msg){ + if(res.data.msg && typeof(res.data.msg) == "string"){ msg = res.data.msg } if (msg.indexOf('该操作的权限')!=-1){ From e8a86e6a26dae8bd3199f15431d552807722a7d4 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 May 2024 23:58:07 +0800 Subject: [PATCH 3/6] =?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'}]) From 587cef62ad9678265b95579012dde53e102b7c3e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 19 May 2024 10:26:17 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=E7=BC=96=E8=BE=91=E6=8A=BC=E9=A2=98?= =?UTF-8?q?=E5=8D=B7=E6=97=B6=E6=9B=B4=E6=96=B0=E9=A2=98=E7=9B=AE=E7=9A=84?= =?UTF-8?q?is=5Fdelete=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_server/examtest/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index d6c3211..73e805b 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -639,6 +639,7 @@ class PaperViewSet(PageOrNot, ModelViewSet): instance = serializer.save() if 'questions' in data: questions = [] + Question.objects.filter(is_delete=True, id__in=[i['id'] for i in data['questions']]).update(is_delete=False) for i in data['questions']: question = {} question['question'] = i['id'] @@ -663,6 +664,7 @@ class PaperViewSet(PageOrNot, ModelViewSet): self.perform_update(serializer) if 'questions' in data: questions = [] + Question.objects.filter(is_delete=True, id__in=[i['id'] for i in data['questions']]).update(is_delete=False) for i in data['questions']: question = {} question['question'] = i['id'] From c3eafe7e72cb05097e43297827be9f9afb2557c1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 19 May 2024 11:41:19 +0800 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=E7=BC=96=E8=BE=91=E6=8A=BC=E9=A2=98?= =?UTF-8?q?=E5=8D=B7=E6=97=B6=E6=9B=B4=E6=96=B0=E9=A2=98=E7=9B=AE=E7=9A=84?= =?UTF-8?q?is=5Fdelete=E5=AD=97=E6=AE=B52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_server/examtest/views.py | 4 ++-- test_server/rbac/models.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 73e805b..29cfdce 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -639,7 +639,7 @@ class PaperViewSet(PageOrNot, ModelViewSet): instance = serializer.save() if 'questions' in data: questions = [] - Question.objects.filter(is_delete=True, id__in=[i['id'] for i in data['questions']]).update(is_delete=False) + Question.objects.get_queryset(all=True).filter(is_delete=True, id__in=[i['id'] for i in data['questions']]).update(is_delete=False) for i in data['questions']: question = {} question['question'] = i['id'] @@ -664,7 +664,7 @@ class PaperViewSet(PageOrNot, ModelViewSet): self.perform_update(serializer) if 'questions' in data: questions = [] - Question.objects.filter(is_delete=True, id__in=[i['id'] for i in data['questions']]).update(is_delete=False) + Question.objects.get_queryset(all=True).filter(is_delete=True, id__in=[i['id'] for i in data['questions']]).update(is_delete=False) for i in data['questions']: question = {} question['question'] = i['id'] diff --git a/test_server/rbac/models.py b/test_server/rbac/models.py index 92af2a8..a4bc604 100644 --- a/test_server/rbac/models.py +++ b/test_server/rbac/models.py @@ -32,14 +32,15 @@ class SoftDeletableManagerMixin(object): """ _queryset_class = SoftDeletableQuerySet - def get_queryset(self): + def get_queryset(self, all=False): """ Return queryset limited to not deleted entries. """ kwargs = {'model': self.model, 'using': self._db} if hasattr(self, '_hints'): kwargs['hints'] = self._hints - + if all: + return self._queryset_class(**kwargs) return self._queryset_class(**kwargs).filter(is_delete=False) From 5d3f1b7172f08219c02f2a6b850184f59c7ef52f Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 19 May 2024 12:21:50 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20response=20msg=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_server/utils/response.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test_server/utils/response.py b/test_server/utils/response.py index 8bcf799..49d6483 100644 --- a/test_server/utils/response.py +++ b/test_server/utils/response.py @@ -50,6 +50,8 @@ class FitJSONRenderer(JSONRenderer): data = data[list(data.keys())[0]] if isinstance(data, list): data = data[0] + if not isinstance(data, str): + data = '请求错误' response_body.msg = data elif data and 'error' in data and data['error']:# 自传异常,key为error response_body.code = data.get("code",400)