Merge branch 'master' of https://e.coding.net/dvadmin/dvadmin3/dvadmin3
This commit is contained in:
@@ -9,9 +9,8 @@ from rest_framework import serializers
|
|||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
|
|
||||||
from dvadmin.system.models import Dept, RoleMenuButtonPermission
|
from dvadmin.system.models import Dept, RoleMenuButtonPermission, Users
|
||||||
from dvadmin.utils.json_response import DetailResponse, SuccessResponse
|
from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse
|
||||||
from dvadmin.utils.permission import AnonymousUserPermission
|
|
||||||
from dvadmin.utils.serializers import CustomModelSerializer
|
from dvadmin.utils.serializers import CustomModelSerializer
|
||||||
from dvadmin.utils.viewset import CustomModelViewSet
|
from dvadmin.utils.viewset import CustomModelViewSet
|
||||||
|
|
||||||
@@ -25,6 +24,11 @@ class DeptSerializer(CustomModelSerializer):
|
|||||||
has_children = serializers.SerializerMethodField()
|
has_children = serializers.SerializerMethodField()
|
||||||
hasChild = serializers.SerializerMethodField()
|
hasChild = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
dept_user_count = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
def get_dept_user_count(self, obj: Dept):
|
||||||
|
return Users.objects.filter(dept=obj).count()
|
||||||
|
|
||||||
def get_hasChild(self, instance):
|
def get_hasChild(self, instance):
|
||||||
hasChild = Dept.objects.filter(parent=instance.id)
|
hasChild = Dept.objects.filter(parent=instance.id)
|
||||||
if hasChild:
|
if hasChild:
|
||||||
@@ -56,16 +60,13 @@ class DeptImportSerializer(CustomModelSerializer):
|
|||||||
read_only_fields = ["id"]
|
read_only_fields = ["id"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class DeptCreateUpdateSerializer(CustomModelSerializer):
|
class DeptCreateUpdateSerializer(CustomModelSerializer):
|
||||||
"""
|
"""
|
||||||
部门管理 创建/更新时的列化器
|
部门管理 创建/更新时的列化器
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
value = validated_data.get('parent',None)
|
value = validated_data.get('parent', None)
|
||||||
if value is None:
|
if value is None:
|
||||||
validated_data['parent'] = self.request.user.dept
|
validated_data['parent'] = self.request.user.dept
|
||||||
instance = super().create(validated_data)
|
instance = super().create(validated_data)
|
||||||
@@ -130,28 +131,59 @@ class DeptViewSet(CustomModelViewSet):
|
|||||||
if is_superuser:
|
if is_superuser:
|
||||||
queryset = Dept.objects.values('id', 'name', 'parent')
|
queryset = Dept.objects.values('id', 'name', 'parent')
|
||||||
else:
|
else:
|
||||||
role_ids = request.user.role.values_list('id',flat=True)
|
role_ids = request.user.role.values_list('id', flat=True)
|
||||||
data_range = RoleMenuButtonPermission.objects.filter(role__in=role_ids).values_list('data_range', flat=True)
|
data_range = RoleMenuButtonPermission.objects.filter(role__in=role_ids).values_list('data_range', flat=True)
|
||||||
user_dept_id = request.user.dept.id
|
user_dept_id = request.user.dept.id
|
||||||
dept_list = [user_dept_id]
|
dept_list = [user_dept_id]
|
||||||
data_range_list = list(set(data_range))
|
data_range_list = list(set(data_range))
|
||||||
for item in data_range_list:
|
for item in data_range_list:
|
||||||
if item in [0,2]:
|
if item in [0, 2]:
|
||||||
dept_list = [user_dept_id]
|
dept_list = [user_dept_id]
|
||||||
elif item == 1:
|
elif item == 1:
|
||||||
dept_list = Dept.recursion_dept_info(dept_id=user_dept_id)
|
dept_list = Dept.recursion_dept_info(dept_id=user_dept_id)
|
||||||
elif item == 3:
|
elif item == 3:
|
||||||
dept_list = Dept.objects.values_list('id',flat=True)
|
dept_list = Dept.objects.values_list('id', flat=True)
|
||||||
elif item == 4:
|
elif item == 4:
|
||||||
dept_list = request.user.role.values_list('dept',flat=True)
|
dept_list = request.user.role.values_list('dept', flat=True)
|
||||||
else:
|
else:
|
||||||
dept_list = []
|
dept_list = []
|
||||||
queryset = Dept.objects.filter(id__in=dept_list).values('id', 'name', 'parent')
|
queryset = Dept.objects.filter(id__in=dept_list).values('id', 'name', 'parent')
|
||||||
return DetailResponse(data=queryset, msg="获取成功")
|
return DetailResponse(data=queryset, msg="获取成功")
|
||||||
|
|
||||||
|
@action(methods=["GET"], detail=False, permission_classes=[IsAuthenticated], extra_filter_class=[])
|
||||||
@action(methods=["GET"], detail=False, permission_classes=[IsAuthenticated],extra_filter_class=[])
|
|
||||||
def all_dept(self, request, *args, **kwargs):
|
def all_dept(self, request, *args, **kwargs):
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
data = queryset.filter(status=True).order_by('sort').values('name', 'id', 'parent')
|
data = queryset.filter(status=True).order_by('sort').values('name', 'id', 'parent')
|
||||||
return DetailResponse(data=data, msg="获取成功")
|
return DetailResponse(data=data, msg="获取成功")
|
||||||
|
|
||||||
|
@action(methods=['POST'], detail=False, permission_classes=[])
|
||||||
|
def move_up(self, request):
|
||||||
|
"""部门上移"""
|
||||||
|
dept_id = request.data.get('dept_id')
|
||||||
|
try:
|
||||||
|
dept = Dept.objects.get(id=dept_id)
|
||||||
|
except Dept.DoesNotExist:
|
||||||
|
return ErrorResponse(msg="部门不存在")
|
||||||
|
previous_menu = Dept.objects.filter(sort__lt=dept.sort, parent=dept.parent).order_by('-sort').first()
|
||||||
|
if previous_menu:
|
||||||
|
previous_menu.sort, dept.sort = dept.sort, previous_menu.sort
|
||||||
|
previous_menu.save()
|
||||||
|
dept.save()
|
||||||
|
|
||||||
|
return SuccessResponse(data=[], msg="上移成功")
|
||||||
|
|
||||||
|
@action(methods=['POST'], detail=False, permission_classes=[])
|
||||||
|
def move_down(self, request):
|
||||||
|
"""部门下移"""
|
||||||
|
dept_id = request.data['dept_id']
|
||||||
|
try:
|
||||||
|
dept = Dept.objects.get(id=dept_id)
|
||||||
|
except Dept.DoesNotExist:
|
||||||
|
return ErrorResponse(msg="部门不存在")
|
||||||
|
next_menu = Dept.objects.filter(sort__gt=dept.sort, parent=dept.parent).order_by('sort').first()
|
||||||
|
if next_menu:
|
||||||
|
next_menu.sort, dept.sort = dept.sort, next_menu.sort
|
||||||
|
next_menu.save()
|
||||||
|
dept.save()
|
||||||
|
|
||||||
|
return SuccessResponse(data=[], msg="下移成功")
|
||||||
|
|||||||
@@ -117,10 +117,7 @@ class MenuViewSet(CustomModelViewSet):
|
|||||||
else:
|
else:
|
||||||
role_list = user.role.values_list('id', flat=True)
|
role_list = user.role.values_list('id', flat=True)
|
||||||
menu_list = RoleMenuPermission.objects.filter(role__in=role_list).values_list('menu_id', flat=True)
|
menu_list = RoleMenuPermission.objects.filter(role__in=role_list).values_list('menu_id', flat=True)
|
||||||
print("role_list", role_list)
|
|
||||||
print("menu_list", menu_list)
|
|
||||||
queryset = Menu.objects.filter(id__in=menu_list)
|
queryset = Menu.objects.filter(id__in=menu_list)
|
||||||
print(queryset)
|
|
||||||
serializer = WebRouterSerializer(queryset, many=True, request=request)
|
serializer = WebRouterSerializer(queryset, many=True, request=request)
|
||||||
data = serializer.data
|
data = serializer.data
|
||||||
return SuccessResponse(data=data, total=len(data), msg="获取成功")
|
return SuccessResponse(data=data, total=len(data), msg="获取成功")
|
||||||
@@ -146,7 +143,7 @@ class MenuViewSet(CustomModelViewSet):
|
|||||||
menu = Menu.objects.get(id=menu_id)
|
menu = Menu.objects.get(id=menu_id)
|
||||||
except Menu.DoesNotExist:
|
except Menu.DoesNotExist:
|
||||||
return ErrorResponse(msg="菜单不存在")
|
return ErrorResponse(msg="菜单不存在")
|
||||||
previous_menu = Menu.objects.filter(sort__lt=menu.sort).order_by('-sort').first()
|
previous_menu = Menu.objects.filter(sort__lt=menu.sort, parent=menu.parent).order_by('-sort').first()
|
||||||
if previous_menu:
|
if previous_menu:
|
||||||
previous_menu.sort, menu.sort = menu.sort, previous_menu.sort
|
previous_menu.sort, menu.sort = menu.sort, previous_menu.sort
|
||||||
previous_menu.save()
|
previous_menu.save()
|
||||||
@@ -162,7 +159,7 @@ class MenuViewSet(CustomModelViewSet):
|
|||||||
menu = Menu.objects.get(id=menu_id)
|
menu = Menu.objects.get(id=menu_id)
|
||||||
except Menu.DoesNotExist:
|
except Menu.DoesNotExist:
|
||||||
return ErrorResponse(msg="菜单不存在")
|
return ErrorResponse(msg="菜单不存在")
|
||||||
next_menu = Menu.objects.filter(sort__gt=menu.sort).order_by('sort').first()
|
next_menu = Menu.objects.filter(sort__gt=menu.sort, parent=menu.parent).order_by('sort').first()
|
||||||
if next_menu:
|
if next_menu:
|
||||||
next_menu.sort, menu.sort = menu.sort, next_menu.sort
|
next_menu.sort, menu.sort = menu.sort, next_menu.sort
|
||||||
next_menu.save()
|
next_menu.save()
|
||||||
|
|||||||
Reference in New Issue
Block a user