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.permissions import IsAuthenticated
|
||||
|
||||
from dvadmin.system.models import Dept, RoleMenuButtonPermission
|
||||
from dvadmin.utils.json_response import DetailResponse, SuccessResponse
|
||||
from dvadmin.utils.permission import AnonymousUserPermission
|
||||
from dvadmin.system.models import Dept, RoleMenuButtonPermission, Users
|
||||
from dvadmin.utils.json_response import DetailResponse, SuccessResponse, ErrorResponse
|
||||
from dvadmin.utils.serializers import CustomModelSerializer
|
||||
from dvadmin.utils.viewset import CustomModelViewSet
|
||||
|
||||
@@ -25,6 +24,11 @@ class DeptSerializer(CustomModelSerializer):
|
||||
has_children = 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):
|
||||
hasChild = Dept.objects.filter(parent=instance.id)
|
||||
if hasChild:
|
||||
@@ -56,9 +60,6 @@ class DeptImportSerializer(CustomModelSerializer):
|
||||
read_only_fields = ["id"]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class DeptCreateUpdateSerializer(CustomModelSerializer):
|
||||
"""
|
||||
部门管理 创建/更新时的列化器
|
||||
@@ -149,9 +150,40 @@ class DeptViewSet(CustomModelViewSet):
|
||||
queryset = Dept.objects.filter(id__in=dept_list).values('id', 'name', 'parent')
|
||||
return DetailResponse(data=queryset, msg="获取成功")
|
||||
|
||||
|
||||
@action(methods=["GET"], detail=False, permission_classes=[IsAuthenticated], extra_filter_class=[])
|
||||
def all_dept(self, request, *args, **kwargs):
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
data = queryset.filter(status=True).order_by('sort').values('name', 'id', 'parent')
|
||||
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:
|
||||
role_list = user.role.values_list('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)
|
||||
print(queryset)
|
||||
serializer = WebRouterSerializer(queryset, many=True, request=request)
|
||||
data = serializer.data
|
||||
return SuccessResponse(data=data, total=len(data), msg="获取成功")
|
||||
@@ -146,7 +143,7 @@ class MenuViewSet(CustomModelViewSet):
|
||||
menu = Menu.objects.get(id=menu_id)
|
||||
except Menu.DoesNotExist:
|
||||
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:
|
||||
previous_menu.sort, menu.sort = menu.sort, previous_menu.sort
|
||||
previous_menu.save()
|
||||
@@ -162,7 +159,7 @@ class MenuViewSet(CustomModelViewSet):
|
||||
menu = Menu.objects.get(id=menu_id)
|
||||
except Menu.DoesNotExist:
|
||||
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:
|
||||
next_menu.sort, menu.sort = menu.sort, next_menu.sort
|
||||
next_menu.save()
|
||||
|
||||
Reference in New Issue
Block a user