examtest/test_server/rbac/views/role.py

51 lines
1.8 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
from rest_framework.response import Response
from rest_framework import status
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)