From e1b771e1669cec800da2f527db031f51a39cd5f5 Mon Sep 17 00:00:00 2001 From: Shaxobff Date: Sat, 25 Apr 2026 12:32:56 +0500 Subject: [PATCH] app permission api 20 (api) --- core/apps/accounts/serializers/permission.py | 22 ++++++++- core/apps/accounts/urls.py | 7 ++- core/apps/accounts/views/permission.py | 52 ++++++++++++++------ 3 files changed, 63 insertions(+), 18 deletions(-) diff --git a/core/apps/accounts/serializers/permission.py b/core/apps/accounts/serializers/permission.py index e06236b..fdf1d37 100644 --- a/core/apps/accounts/serializers/permission.py +++ b/core/apps/accounts/serializers/permission.py @@ -1,8 +1,26 @@ from rest_framework import serializers -from core.apps.accounts.models.permission import PermissionToAction +from core.apps.accounts.models.permission import PermissionToAction, PermissionToTab, Permission, Role + + +class PermissionToActionSerializer(serializers.ModelSerializer): + class Meta: + model = PermissionToAction + fields = "__all__" + +class PermissionToTabSerializer(serializers.ModelSerializer): + class Meta: + model = PermissionToTab + fields = '__all__' class PermissionSerializer(serializers.ModelSerializer): class Meta: - model = PermissionToAction + model = Permission + fields = '__all__' + + +class RoleSerializer(serializers.ModelSerializer): + class Meta: + model = Role + fields = '__all__' \ No newline at end of file diff --git a/core/apps/accounts/urls.py b/core/apps/accounts/urls.py index 2167172..5ff9a73 100644 --- a/core/apps/accounts/urls.py +++ b/core/apps/accounts/urls.py @@ -8,7 +8,7 @@ from .views import RegisterView, ResetPasswordView, MeView, ChangePasswordView, AdminUserView, AdminCreateAPIView, AdminUpdateAPIView from rest_framework.routers import DefaultRouter -# from .views.permission import PermissionToActionViewSetMixin +from .views.permission import PermissionToActionViewSet, PermissionToTabViewSet, PermissionViewSet, RoleViewSet router = DefaultRouter() router.register("auth", RegisterView, basename="auth") @@ -16,7 +16,10 @@ router.register("auth", ResetPasswordView, basename="reset-password") router.register("auth", MeView, basename="me") router.register("auth", ChangePasswordView, basename="change-password") router.register("user", AdminUserView, basename="user-crud") -# router.register("user", PermissionToActionViewSetMixin, basename="permission") +router.register("action", PermissionToActionViewSet, basename="action") +router.register("permission-to-tab", PermissionToTabViewSet, basename="permission-to-tab") +router.register("permission", PermissionViewSet, basename="permission") +router.register("permission-role", RoleViewSet, basename="permission-role") urlpatterns = [ diff --git a/core/apps/accounts/views/permission.py b/core/apps/accounts/views/permission.py index c395857..4d82f49 100644 --- a/core/apps/accounts/views/permission.py +++ b/core/apps/accounts/views/permission.py @@ -1,18 +1,42 @@ from django_core.mixins import BaseViewSetMixin -from rest_framework.permissions import AllowAny +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 -from core.apps.accounts.serializers.permission import PermissionSerializer +from core.apps.accounts.models.permission import PermissionToAction, PermissionToTab, Permission, Role +from core.apps.accounts.serializers.permission import PermissionToActionSerializer, PermissionToTabSerializer, \ + PermissionSerializer, RoleSerializer -# class PermissionToActionViewSetMixin(BaseViewSetMixin): -# queryset = PermissionToAction.objects.all() -# permission_classes = [AllowAny] -# serializer_class = PermissionSerializer -# -# action_permission_classes = {} -# action_serializer_class = { -# "list": PermissionSerializer, -# "retrieve": PermissionSerializer, -# "create": PermissionSerializer, -# } +@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