diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 9052f70..6db2789 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -12,6 +12,7 @@ from utils.pagination import PageOrNot from rest_framework.exceptions import ParseError 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': '*'} @@ -75,6 +76,25 @@ 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'}) def my(self, request, *args, **kwargs): """ @@ -111,6 +131,24 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel return QActionDetailSerializer return super().get_serializer_class() + 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, 'belong_dept'): + 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(belong_dept__in = belong_depts) + elif '本级' in data_range: + 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):