fix: 放行按钮权限接口

pull/102/head
Angelo 2023-07-07 13:39:21 +08:00
parent 7ee4c3a672
commit acfe3e338d
1 changed files with 11 additions and 6 deletions

View File

@ -23,7 +23,7 @@ class MenuButtonSerializer(CustomModelSerializer):
class Meta: class Meta:
model = MenuButton model = MenuButton
fields = ['id', 'name', 'value', 'api', 'method', 'menu'] fields = ["id", "name", "value", "api", "method", "menu"]
read_only_fields = ["id"] read_only_fields = ["id"]
@ -34,7 +34,7 @@ class MenuButtonInitSerializer(CustomModelSerializer):
class Meta: class Meta:
model = MenuButton model = MenuButton
fields = ['id', 'name', 'value', 'api', 'method', 'menu'] fields = ["id", "name", "value", "api", "method", "menu"]
read_only_fields = ["id"] read_only_fields = ["id"]
@ -58,21 +58,26 @@ class MenuButtonViewSet(CustomModelViewSet):
retrieve:单例 retrieve:单例
destroy:删除 destroy:删除
""" """
queryset = MenuButton.objects.all() queryset = MenuButton.objects.all()
serializer_class = MenuButtonSerializer serializer_class = MenuButtonSerializer
create_serializer_class = MenuButtonCreateUpdateSerializer create_serializer_class = MenuButtonCreateUpdateSerializer
update_serializer_class = MenuButtonCreateUpdateSerializer update_serializer_class = MenuButtonCreateUpdateSerializer
extra_filter_backends = [] extra_filter_backends = []
@action(methods=['get'], detail=False) @action(methods=["GET"], detail=False, permission_classes=[])
def get_btn_permission(self,request): def get_btn_permission(self, request):
""" """
获取当前用户的按钮权限 获取当前用户的按钮权限
""" """
user = request.user user = request.user
if not user.is_superuser: if not user.is_superuser:
menuIds = user.role.values_list('menu__id', flat=True) menuIds = user.role.values_list("menu__id", flat=True)
else: else:
menuIds = Menu.objects.filter(status=1) menuIds = Menu.objects.filter(status=1)
queryset = MenuButton.objects.filter(menu__in=menuIds).annotate(permission=Concat('menu__web_path',Value(':'),'value',output_field=CharField())).values_list('permission',flat=True) queryset = (
MenuButton.objects.filter(menu__in=menuIds)
.annotate(permission=Concat("menu__web_path", Value(":"), "value", output_field=CharField()))
.values_list("permission", flat=True)
)
return DetailResponse(data=queryset) return DetailResponse(data=queryset)