添加上级部门查看所有下级部门中的用户
parent
991b6a7d90
commit
906970f149
|
@ -11,6 +11,7 @@ from mongoengine.queryset import visitor
|
||||||
from rest_framework.filters import BaseFilterBackend, SearchFilter, OrderingFilter
|
from rest_framework.filters import BaseFilterBackend, SearchFilter, OrderingFilter
|
||||||
|
|
||||||
from ..permission.models import Dept
|
from ..permission.models import Dept
|
||||||
|
from ..utils.model_util import get_dept
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -147,18 +148,6 @@ class DataLevelPermissionsFilter(BaseFilterBackend):
|
||||||
elif ele == '3':
|
elif ele == '3':
|
||||||
dept_list.append(user_dept_id)
|
dept_list.append(user_dept_id)
|
||||||
elif ele == '4':
|
elif ele == '4':
|
||||||
dept_list.extend(self.get_dept(user_dept_id, Dept.objects.all().values('id', 'parentId')))
|
dept_list.extend(get_dept(user_dept_id,))
|
||||||
dept_list.append(user_dept_id)
|
|
||||||
return queryset.filter(dept_belong_id__in=list(set(dept_list)))
|
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
|
import django_filters
|
||||||
|
|
||||||
from ..permission.models import Menu, Dept, Post, Role, UserProfile
|
from ..permission.models import Menu, Dept, Post, Role, UserProfile
|
||||||
|
from ..utils.model_util import get_dept
|
||||||
|
|
||||||
|
|
||||||
class MenuFilter(django_filters.rest_framework.FilterSet):
|
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')
|
username = django_filters.CharFilter(lookup_expr='icontains')
|
||||||
mobile = 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:
|
class Meta:
|
||||||
model = UserProfile
|
model = UserProfile
|
||||||
|
|
|
@ -6,6 +6,8 @@ from django.apps.config import AppConfig
|
||||||
from django.db.models.fields import Field
|
from django.db.models.fields import Field
|
||||||
from rest_framework.renderers import JSONRenderer
|
from rest_framework.renderers import JSONRenderer
|
||||||
|
|
||||||
|
from ..permission.models import Dept
|
||||||
|
|
||||||
|
|
||||||
def get_primary_field(model, many=False):
|
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)
|
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:
|
class ModelRelateUtils:
|
||||||
"""
|
"""
|
||||||
封装ORM模型的映射操作,例如
|
封装ORM模型的映射操作,例如
|
||||||
|
|
Loading…
Reference in New Issue