From adf5957f70f615e1d90e6a573fccedd3579cfb74 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 2 Nov 2022 15:50:38 +0800 Subject: [PATCH] =?UTF-8?q?qtask=20=E5=8F=AF=E7=9C=8B=E4=B8=8B=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/views_qtask.py | 134 ++++++++++++++--------------- 1 file changed, 65 insertions(+), 69 deletions(-) diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 6db2789..d0a6972 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -14,6 +14,7 @@ from rest_framework import serializers from rest_framework.exceptions import ParseError from utils.queryset import get_child_queryset2 + class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet): perms_map = {'get': '*'} queryset = QualiLib.objects.all() @@ -21,21 +22,24 @@ class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet): search_fields = ['name'] ordering = ['-create_time'] + class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): perms_map = {'get': '*'} - queryset = Quali.objects.select_related('org', 'province', 'city', 'file').prefetch_related('citys') + queryset = Quali.objects.select_related( + 'org', 'province', 'city', 'file').prefetch_related('citys') serializer_class = QualiListSerializer search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description'] ordering = ['org', 'org__sort', 'create_time'] filterset_fields = ['org', 'type', 'grade', 'province', 'city', 'citys'] - @action(methods=['get'], detail=False, perms_map = {'get':'*'}) + @action(methods=['get'], detail=False, perms_map={'get': '*'}) def my(self, request, *args, **kwargs): """ 我的资质 """ user = self.request.user - queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept)) + queryset = self.filter_queryset( + self.get_queryset().filter(org=user.dept)) page = self.paginate_queryset(queryset) if page is not None: @@ -45,8 +49,10 @@ class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) + class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, UpdateModelMixin, DestroyModelMixin, GenericViewSet): - perms_map = {'get': 'qtask_view', 'post': 'qtask_create', 'put': 'qtask_update'} + perms_map = {'get': 'qtask_view', + 'post': 'qtask_create', 'put': 'qtask_update'} queryset = QTask.objects.all() serializer_class = QTaskListSerializer ordering = ['-create_time'] @@ -55,8 +61,8 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up if self.action in ['create', 'update']: return QTaskCreateUpdateSerializer return super().get_serializer_class() - - @action(methods=['put'], detail=True, perms_map = {'put':'qtask_start'}, serializer_class=serializers.Serializer) + + @action(methods=['put'], detail=True, perms_map={'put': 'qtask_start'}, serializer_class=serializers.Serializer) @transaction.atomic def start(self, request, *args, **kwargs): """ @@ -69,6 +75,7 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up return Response() return Response('任务状态错误', status=status.HTTP_400_BAD_REQUEST) + class QOrgViewSet(ListModelMixin, GenericViewSet): perms_map = {'get': 'qtask_view'} queryset = QOrg.objects.select_related('qtask', 'org') @@ -76,41 +83,26 @@ class QOrgViewSet(ListModelMixin, GenericViewSet): serializer_class = QOrgListSerializer ordering = ['-create_time'] - def get_queryset(self): - queryset = self.queryset - if hasattr(self.get_serializer_class(), 'setup_eager_loading'): - queryset = self.get_serializer_class().setup_eager_loading(queryset) - if self.request.user.is_superuser: - pass - if hasattr(queryset.model, 'org'): - user = self.request.user - roles = user.roles - data_range = roles.values_list('datas', flat=True) - if '全部' in data_range: - pass - elif '本级及以下' in data_range: - belong_depts = get_child_queryset2(user.dept) - queryset = queryset.filter(org__in = belong_depts) - elif '本级' in data_range: - queryset = queryset.filter(org = user.dept) - return queryset - - @action(methods=['get'], detail=False, perms_map = {'get':'qtask_my'}) + @action(methods=['get'], detail=False, perms_map={'get': 'qtask_my'}) def my(self, request, *args, **kwargs): """ 我的报送任务 """ user = self.request.user - queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept, qtask__is_deleted=False).exclude(qtask__state='待发布')) - + queryset = self.filter_queryset(self.get_queryset().filter(qtask__is_deleted=False).exclude(qtask__state='待发布')) + mydept = user.dept + belong_depts = get_child_queryset2(mydept) + queryset = queryset.filter(org__in = belong_depts) + dept = self.request.query_params.get('org', mydept.id) + queryset = queryset.filter(org=dept) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) - serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) + def cal_count(qtask, org): qs = QAction.objects.filter(qtask=qtask, belong_dept=org) qorg = QOrg.objects.get(qtask=qtask, org=org) @@ -118,9 +110,11 @@ def cal_count(qtask, org): qorg.count_confirmed = qs.filter(confirmed=True).count() qorg.save() -class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet): + +class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, GenericViewSet): perms_map = {'get': '*', 'delete': 'qaction_delete'} - queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by') + queryset = QAction.objects.select_related( + 'file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by') filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield'] serializer_class = QActionListSerializer @@ -145,27 +139,28 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel pass elif '本级及以下' in data_range: belong_depts = get_child_queryset2(user.dept) - queryset = queryset.filter(belong_dept__in = belong_depts) + queryset = queryset.filter(belong_dept__in=belong_depts) elif '本级' in data_range: - queryset = queryset.filter(belong_dept = user.dept) + queryset = queryset.filter(belong_dept=user.dept) return queryset - @action(methods=['get'], detail=False, perms_map = {'get':'qaction_my'}) - def my(self, request, *args, **kwargs): - """ - 我的报送操作 - """ - user = self.request.user - queryset = self.filter_queryset(self.get_queryset().filter(belong_dept=user.dept)) + # @action(methods=['get'], detail=False, perms_map={'get': '*'}) + # def my(self, request, *args, **kwargs): + # """ + # 我的报送操作 + # """ + # user = self.request.user + # queryset = self.filter_queryset( + # self.get_queryset().filter(belong_dept=user.dept)) - page = self.paginate_queryset(queryset) - if page is not None: - serializer = self.get_serializer(page, many=True) - return self.get_paginated_response(serializer.data) + # page = self.paginate_queryset(queryset) + # if page is not None: + # serializer = self.get_serializer(page, many=True) + # return self.get_paginated_response(serializer.data) + + # serializer = self.get_serializer(queryset, many=True) + # return Response(serializer.data) - serializer = self.get_serializer(queryset, many=True) - return Response(serializer.data) - def perform_destroy(self, instance): user = self.request.user if not instance.confirmed: @@ -175,7 +170,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel raise ParseError('报送已确认, 不可删除') @action(methods=['post'], detail=False, - perms_map = {'post':'qaction_create'}, serializer_class=QActionServiceSerializer) + perms_map={'post': 'qaction_create'}, serializer_class=QActionServiceSerializer) @transaction.atomic def service_update(self, request, *args, **kwargs): """ @@ -190,7 +185,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel return Response() @action(methods=['post'], detail=False, - perms_map = {'post':'qaction_create'}, serializer_class=QActionQualiCreateSerializer) + perms_map={'post': 'qaction_create'}, serializer_class=QActionQualiCreateSerializer) @transaction.atomic def quali_create(self, request, *args, **kwargs): """ @@ -205,7 +200,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel return Response() @action(methods=['post'], detail=False, - perms_map = {'post':'qaction_create'}, serializer_class=QActionQualiUpdateSerializer) + perms_map={'post': 'qaction_create'}, serializer_class=QActionQualiUpdateSerializer) @transaction.atomic def quali_update(self, request, *args, **kwargs): """ @@ -224,22 +219,25 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel obj.save() for k, v in value2.items(): if v != old_data[k]: - QActionItem.objects.create(action='update', field=k, value1=old_data[k], value2=v, qaction=obj) + QActionItem.objects.create( + action='update', field=k, value1=old_data[k], value2=v, qaction=obj) if k == 'citys': old_citys = set(old_data['citys']) new_citys = set(v) removes = old_citys.difference(new_citys) adds = new_citys.difference(old_citys) for i in removes: - QActionItem.objects.create(action='city:remove', field='citys', city=City.objects.get(id=i), qaction=obj) + QActionItem.objects.create( + action='city:remove', field='citys', city=City.objects.get(id=i), qaction=obj) for i in adds: - QActionItem.objects.create(action='city:add', field='citys', city=City.objects.get(id=i), qaction=obj) + QActionItem.objects.create( + action='city:add', field='citys', city=City.objects.get(id=i), qaction=obj) cal_count(vdata['qtask'], user.dept) return Response() - + @action(methods=['post'], detail=False, - perms_map = {'post':'qaction_create'}, serializer_class=QActionACreateSerializer) + perms_map={'post': 'qaction_create'}, serializer_class=QActionACreateSerializer) @transaction.atomic def ability_create(self, request, *args, **kwargs): """ @@ -254,7 +252,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel return Response() @action(methods=['post'], detail=False, - perms_map = {'post':'qaction_create'}, serializer_class=QActionNoChangeSerializer) + perms_map={'post': 'qaction_create'}, serializer_class=QActionNoChangeSerializer) @transaction.atomic def ability_nochange(self, request, *args, **kwargs): """ @@ -263,13 +261,14 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel user = request.user serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) - serializer.save(create_by=user, belong_dept=user.dept, action='ability:nochange') + serializer.save(create_by=user, belong_dept=user.dept, + action='ability:nochange') vdata = serializer.validated_data cal_count(vdata['qtask'], user.dept) return Response() - + @action(methods=['post'], detail=False, - perms_map = {'post':'qaction_create'}, serializer_class=QActionNoChangeSerializer) + perms_map={'post': 'qaction_create'}, serializer_class=QActionNoChangeSerializer) @transaction.atomic def quali_nochange(self, request, *args, **kwargs): """ @@ -278,13 +277,13 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel user = request.user serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) - serializer.save(create_by=user, belong_dept=user.dept, action='quali:nochange') + serializer.save(create_by=user, belong_dept=user.dept, + action='quali:nochange') vdata = serializer.validated_data cal_count(vdata['qtask'], user.dept) return Response() - - @action(methods=['put'], detail=True, perms_map = {'put':'qaction_confirm'}, + @action(methods=['put'], detail=True, perms_map={'put': 'qaction_confirm'}, serializer_class=serializers.Serializer) @transaction.atomic def confirm(self, request, *args, **kwargs): @@ -301,9 +300,11 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel elif obj.action == 'quali:create': serializer = QualiCreateSerializer(data=obj.value2) serializer.is_valid(raise_exception=True) - instance = serializer.save(org=obj.belong_dept, create_by=obj.create_by) + instance = serializer.save( + org=obj.belong_dept, create_by=obj.create_by) if instance.type == 'OTHER': - qualiLib, _ = QualiLib.objects.get_or_create(name=instance.name) + qualiLib, _ = QualiLib.objects.get_or_create( + name=instance.name) levels = qualiLib.levels levels.append(instance.level) le = list(set(levels)) @@ -322,8 +323,3 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel obj.save() cal_count(obj.qtask, obj.belong_dept) return Response(status=status.HTTP_200_OK) - - - - - \ No newline at end of file