qtask 可看下级
This commit is contained in:
		
							parent
							
								
									81d99a168c
								
							
						
					
					
						commit
						adf5957f70
					
				|  | @ -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'] | ||||
|  | @ -56,7 +62,7 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up | |||
|             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,26 +139,27 @@ 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 | ||||
|  | @ -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) | ||||
|          | ||||
|          | ||||
| 
 | ||||
| 
 | ||||
|      | ||||
		Loading…
	
		Reference in New Issue