From b97702497206958ca17a16b71e56297a349ec491 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 13 May 2021 09:35:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E9=95=BF=E6=9D=83=E9=99=90=E6=8E=A7?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/quality/permission.py | 3 --- server/apps/quality/views.py | 23 +++++++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/server/apps/quality/permission.py b/server/apps/quality/permission.py index ee5e176..62a09ad 100644 --- a/server/apps/quality/permission.py +++ b/server/apps/quality/permission.py @@ -3,16 +3,13 @@ from .models import * class IsSubInspectTaskLeader(RbacPermission): def has_object_permission(self, request, view, obj): - print(obj, request.user.name) if InspectTeam.objects.filter(subtask=obj.subtask, type='组长').first().member == request.user: # 如果是组长 return True return False class IsInspectRecordChecker(RbacPermission): - def has_object_permission(self, request, view, obj): - print(2, obj, request.user.name) if obj.checker == request.user or obj.checker == None: return True return False \ No newline at end of file diff --git a/server/apps/quality/views.py b/server/apps/quality/views.py index a92e5ca..5b330ab 100644 --- a/server/apps/quality/views.py +++ b/server/apps/quality/views.py @@ -206,13 +206,18 @@ class InspectDeptViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin, InspectRecord.objects.bulk_create(records) return Response(status=status.HTTP_201_CREATED) - @action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'}, - permission_classes=[IsAdminUser|IsSubInspectTaskLeader]) + @action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'}) def start(self, request, *args, **kwargs): """ 对该组织开始检查 """ obj = self.get_object() + + if request.user == InspectTeam.objects.get(subtask=obj.subtask, type='组长').member: + pass + else: + raise PermissionDenied + if obj.state == '待检查': obj.state = '检查中' obj.start_date = timezone.now().date() @@ -220,13 +225,18 @@ class InspectDeptViewSet(OptimizationMixin, ListModelMixin, RetrieveModelMixin, return Response(InspectDeptSerializer(instance=obj).data, status=status.HTTP_200_OK) return Response('状态错误', status=status.HTTP_400_BAD_REQUEST) - @action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'}, - permission_classes=[IsAdminUser|IsSubInspectTaskLeader]) + @action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'}) def up(self, request, *args, **kwargs): """ 组长对该组织检查结果提交 """ obj = self.get_object() + + if request.user == InspectTeam.objects.get(subtask=obj.subtask, type='组长').member: + pass + else: + raise PermissionDenied + if obj.state == '检查中': if InspectRecord.objects.filter(checked=False, subtask=obj.subtask, dept=obj.dept).exists(): return Response('存在未完成检查记录', status=status.HTTP_400_BAD_REQUEST) @@ -297,8 +307,7 @@ class InspectRecordViewSet(OptimizationMixin, PageOrNot, ModelViewSet): InspectRecord.objects.filter(item__in=items, subtask=subtask, checker__isnull=True, checked= False).update(checker=checker) return Response(status=status.HTTP_200_OK) - @action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'}, - permission_classes=[IsAdminUser|IsInspectRecordChecker|IsSubInspectTaskLeader]) + @action(methods=['put'], detail=True, perms_map = {'put':'inspectrecord_update'}) def check(self, request, *args, **kwargs): """ 提交单条记录检查结果 @@ -306,6 +315,8 @@ class InspectRecordViewSet(OptimizationMixin, PageOrNot, ModelViewSet): instance = self.get_object() leader = InspectTeam.objects.get(subtask=instance.subtask, type='组长').member if request.user == instance.checker or request.user == None or request.user == leader: + pass + else: raise PermissionDenied if instance.subtask.state == '执行中': serializer = InspectRecordCheckSerializer(instance, data=request.data)