49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.7 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
 | 
						|
from ..permission import RbacPermission
 | 
						|
from ..models import Role
 | 
						|
from ..serializers.role_serializer import RoleListSerializer, RoleModifySerializer
 | 
						|
 | 
						|
 | 
						|
class RoleViewSet(ModelViewSet):
 | 
						|
    """
 | 
						|
    角色管理:增删改查
 | 
						|
    """
 | 
						|
    perms_map = ({'get': 'role_list'}, {'post': 'role_create'}, {'put': 'role_update'},
 | 
						|
                 {'delete': 'role_delete'})
 | 
						|
    queryset = Role.objects.filter(is_delete=0).all().order_by('-id')
 | 
						|
    serializer_class = RoleListSerializer
 | 
						|
    pagination_class = None
 | 
						|
    filter_backends = (SearchFilter, OrderingFilter)
 | 
						|
    search_fields = ('name',)
 | 
						|
    ordering_fields = ('id',)
 | 
						|
 | 
						|
    def get_serializer_class(self):
 | 
						|
        if self.action == 'list':
 | 
						|
            return RoleListSerializer
 | 
						|
        return RoleModifySerializer
 | 
						|
        
 | 
						|
    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)
 | 
						|
                    )
 | 
						|
 | 
						|
    def destroy(self, request, *args, **kwargs): #逻辑删除
 | 
						|
        instance = self.get_object()
 | 
						|
        # self.perform_destroy(instance)
 | 
						|
        instance.is_delete = True
 | 
						|
        instance.save()
 | 
						|
        return Response(status=status.HTTP_204_NO_CONTENT)
 |