47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			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 = ()
 |