examtest/test_server/rbac/views/menu.py

47 lines
1.5 KiB
Python

from rest_framework.filters import SearchFilter, OrderingFilter
from rest_framework.viewsets import ModelViewSet
from rest_framework.permissions import IsAuthenticated
from utils.custom import CommonPagination, TreeAPIView
from ..permission import RbacPermission
from ..models import Menu
from ..serializers.menu_serializer import MenuSerializer
class MenuViewSet(ModelViewSet):
"""
菜单管理:增删改查
"""
perms_map = ({'get': 'menu_list'}, {'post': 'menu_create'}, {'put': 'menu_update'},
{'delete': 'menu_delete'})
queryset = Menu.objects.all()
serializer_class = MenuSerializer
pagination_class = None
filter_backends = (SearchFilter, OrderingFilter)
search_fields = ('name',)
ordering_fields = ('sort',)
permission_classes = (IsAuthenticated,RbacPermission)
def check_permissions(self, request):
"""
Check if the request should be permitted.
Raises an appropriate exception if the request is not permitted.
"""
if request.method == 'GET':
pass
else:
for permission in self.get_permissions():
if not permission.has_permission(request, self):
self.permission_denied(
request, message=getattr(permission, 'message', None)
)
class MenuTreeView(TreeAPIView):
"""
菜单树
"""
queryset = Menu.objects.all()
pagination_class = None
permission_classes = ()