qtask 可看下级

This commit is contained in:
caoqianming 2022-11-02 15:33:17 +08:00
parent c8268bbc26
commit 81d99a168c
1 changed files with 38 additions and 0 deletions

View File

@ -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):