from django_core.mixins import BaseViewSetMixin from drf_spectacular.utils import extend_schema from rest_framework.permissions import AllowAny, IsAdminUser from rest_framework.viewsets import ModelViewSet from core.apps.accounts.models.permission import PermissionToAction, PermissionToTab, Permission, Role from core.apps.accounts.serializers.permission import PermissionToActionSerializer, PermissionToTabSerializer, \ PermissionSerializer, RoleSerializer @extend_schema(tags=["permission"]) class PermissionToActionViewSet(BaseViewSetMixin, ModelViewSet): queryset = PermissionToAction.objects.all() serializer_class = PermissionToActionSerializer action_serializer_class = { 'create': PermissionToActionSerializer, 'update': PermissionToActionSerializer, } action_permission_classes = { 'create': [AllowAny], 'destroy': [IsAdminUser], } @extend_schema(tags=["permission"]) class PermissionToTabViewSet(BaseViewSetMixin, ModelViewSet): queryset = PermissionToTab.objects.all() serializer_class = PermissionToTabSerializer @extend_schema(tags=["permission"]) class PermissionViewSet(BaseViewSetMixin, ModelViewSet): queryset = Permission.objects.all() serializer_class = PermissionSerializer class RoleViewSet(BaseViewSetMixin, ModelViewSet): queryset = Role.objects.all() serializer_class = RoleSerializer