71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
@author: 猿小天
|
|
@contact: QQ:1638245306
|
|
@Created on: 2021/6/3 003 0:30
|
|
@Remark: 菜单按钮管理
|
|
"""
|
|
from django.db.models import F
|
|
from rest_framework.decorators import action
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
from dvadmin.system.models import MenuButton, RoleMenuButtonPermission
|
|
from dvadmin.utils.json_response import DetailResponse
|
|
from dvadmin.utils.serializers import CustomModelSerializer
|
|
from dvadmin.utils.viewset import CustomModelViewSet
|
|
|
|
|
|
class MenuButtonSerializer(CustomModelSerializer):
|
|
"""
|
|
菜单按钮-序列化器
|
|
"""
|
|
|
|
class Meta:
|
|
model = MenuButton
|
|
fields = ['id', 'name', 'value', 'api', 'method','menu']
|
|
read_only_fields = ["id"]
|
|
|
|
|
|
|
|
|
|
class MenuButtonCreateUpdateSerializer(CustomModelSerializer):
|
|
"""
|
|
初始化菜单按钮-序列化器
|
|
"""
|
|
|
|
class Meta:
|
|
model = MenuButton
|
|
fields = "__all__"
|
|
read_only_fields = ["id"]
|
|
|
|
|
|
class MenuButtonViewSet(CustomModelViewSet):
|
|
"""
|
|
菜单按钮接口
|
|
list:查询
|
|
create:新增
|
|
update:修改
|
|
retrieve:单例
|
|
destroy:删除
|
|
"""
|
|
queryset = MenuButton.objects.all()
|
|
serializer_class = MenuButtonSerializer
|
|
create_serializer_class = MenuButtonCreateUpdateSerializer
|
|
update_serializer_class = MenuButtonCreateUpdateSerializer
|
|
extra_filter_class = []
|
|
|
|
@action(methods=['get'],detail=False,permission_classes=[IsAuthenticated])
|
|
def menu_button_all_permission(self,request):
|
|
"""
|
|
获取所有的按钮权限
|
|
:param request:
|
|
:return:
|
|
"""
|
|
is_superuser = request.user.is_superuser
|
|
if is_superuser:
|
|
queryset = MenuButton.objects.values_list('value',flat=True)
|
|
else:
|
|
role_id = request.user.role.values_list('id', flat=True)
|
|
queryset = RoleMenuButtonPermission.objects.filter(role__in=role_id).values_list('menu_button__value',flat=True).distinct()
|
|
return DetailResponse(data=queryset) |