添加上级部门查看所有下级部门中的用户
parent
991b6a7d90
commit
906970f149
|
@ -11,6 +11,7 @@ from mongoengine.queryset import visitor
|
|||
from rest_framework.filters import BaseFilterBackend, SearchFilter, OrderingFilter
|
||||
|
||||
from ..permission.models import Dept
|
||||
from ..utils.model_util import get_dept
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -147,18 +148,6 @@ class DataLevelPermissionsFilter(BaseFilterBackend):
|
|||
elif ele == '3':
|
||||
dept_list.append(user_dept_id)
|
||||
elif ele == '4':
|
||||
dept_list.extend(self.get_dept(user_dept_id, Dept.objects.all().values('id', 'parentId')))
|
||||
dept_list.append(user_dept_id)
|
||||
dept_list.extend(get_dept(user_dept_id,))
|
||||
return queryset.filter(dept_belong_id__in=list(set(dept_list)))
|
||||
|
||||
def get_dept(self, id, dept_all_list, dept_list=[]):
|
||||
"""
|
||||
获取部门的所有下级部门
|
||||
:param id:
|
||||
:return:
|
||||
"""
|
||||
for ele in dept_all_list:
|
||||
if ele.get('parentId') == id:
|
||||
dept_list.append(ele.get('id'))
|
||||
self.get_dept(ele.get('id'), dept_all_list, dept_list)
|
||||
return dept_list
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import django_filters
|
||||
|
||||
from ..permission.models import Menu, Dept, Post, Role, UserProfile
|
||||
from ..utils.model_util import get_dept
|
||||
|
||||
|
||||
class MenuFilter(django_filters.rest_framework.FilterSet):
|
||||
|
@ -53,7 +54,10 @@ class UserProfileFilter(django_filters.rest_framework.FilterSet):
|
|||
"""
|
||||
username = django_filters.CharFilter(lookup_expr='icontains')
|
||||
mobile = django_filters.CharFilter(lookup_expr='icontains')
|
||||
deptId = django_filters.CharFilter(field_name='dept__id')
|
||||
deptId = django_filters.CharFilter(method='filter_deptId')
|
||||
|
||||
def filter_deptId(self, queryset, name, value):
|
||||
return queryset.filter(dept__id__in=get_dept(dept_id=value))
|
||||
|
||||
class Meta:
|
||||
model = UserProfile
|
||||
|
|
|
@ -6,6 +6,8 @@ from django.apps.config import AppConfig
|
|||
from django.db.models.fields import Field
|
||||
from rest_framework.renderers import JSONRenderer
|
||||
|
||||
from ..permission.models import Dept
|
||||
|
||||
|
||||
def get_primary_field(model, many=False):
|
||||
"""
|
||||
|
@ -63,6 +65,25 @@ def get_model(app_label: str = None, model_name: str = None, model_label: str =
|
|||
return app_conf.get_model(model_name)
|
||||
|
||||
|
||||
def get_dept(dept_id: int, dept_all_list=None, dept_list=None):
|
||||
"""
|
||||
递归获取部门的所有下级部门
|
||||
:param dept_id: 需要获取的部门id
|
||||
:param dept_all_list: 所有部门列表
|
||||
:param dept_list: 递归部门list
|
||||
:return:
|
||||
"""
|
||||
if not dept_all_list:
|
||||
dept_all_list = Dept.objects.all().values('id', 'parentId')
|
||||
if dept_list is None:
|
||||
dept_list = [dept_id]
|
||||
for ele in dept_all_list:
|
||||
if ele.get('parentId') == int(dept_id):
|
||||
dept_list.append(ele.get('id'))
|
||||
get_dept(ele.get('id'), dept_all_list, dept_list)
|
||||
return list(set(dept_list))
|
||||
|
||||
|
||||
class ModelRelateUtils:
|
||||
"""
|
||||
封装ORM模型的映射操作,例如
|
||||
|
|
Loading…
Reference in New Issue