add: add role crud api

This commit is contained in:
behruz-dev
2025-09-19 16:04:50 +05:00
parent 9b5aa5451e
commit 1d8c1918b8
4 changed files with 80 additions and 4 deletions

View File

@@ -12,16 +12,20 @@ class PermissionToActionListSerializer(serializers.ModelSerializer):
class PermissionToTabListSerializer(serializers.ModelSerializer):
permission_to_actions = PermissionToActionListSerializer(many=True)
class Meta:
model = PermissionToTab
fields = [
'id', 'name', 'code'
'id', 'name', 'code', 'permission_to_actions'
]
class PermissionListSerializer(serializers.ModelSerializer):
permission_tab = PermissionToTabListSerializer(many=True)
class Meta:
model = Permission
fields = [
'id', 'name', 'code'
'id', 'name', 'code', 'permission_tab'
]

View File

@@ -6,4 +6,12 @@ from core.apps.accounts.models.role import Role
class RoleListSerializer(serializers.ModelSerializer):
class Meta:
model = Role
fields = ['id', 'name', 'comment']
fields = ['id', 'name', 'comment']
class RoleSerializer(serializers.ModelSerializer):
class Meta:
model = Role
fields = [
'name', 'comment', 'permissions', 'permission_to_tabs', 'permission_to_actions'
]

View File

@@ -27,6 +27,9 @@ urlpatterns = [
path('role/', include(
[
path('list/', role_views.RoleListApiView.as_view()),
path('create/', role_views.RoleCreateApiView.as_view()),
path('<uuid:id>/update/', role_views.RoleUpdateApiView.as_view()),
path('<uuid:id>/delete/', role_views.RoleDeleteApiView.as_view()),
]
)),
path('permission/', include(

View File

@@ -1,4 +1,6 @@
from rest_framework import generics
from django.shortcuts import get_object_or_404
from rest_framework import generics, views
from rest_framework.response import Response
from core.apps.accounts.permissions.permissions import HasRolePermission
@@ -11,3 +13,62 @@ class RoleListApiView(generics.ListAPIView):
queryset = Role.objects.all()
permission_classes = [HasRolePermission]
class RoleCreateApiView(generics.GenericAPIView):
serializer_class = serializers.RoleSerializer
queryset = Role.objects.all()
permission_classes = [HasRolePermission]
def post(self, request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(
{
'success': True, 'message': 'Role created',
},
status=201
)
return Response(
{
'success': False,
'error': serializer.errors,
},
status=400
)
class RoleUpdateApiView(generics.GenericAPIView):
serializer_class = serializers.RoleSerializer
queryset = Role.objects.all()
permission_classes = [HasRolePermission]
def patch(self, request, id):
obj = get_object_or_404(Role, id=id)
serializer = self.serializer_class(data=request.data, instance=obj, partial=True)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(
{
'success': True,
'message': 'Role updated',
},
status=200
)
return Response(
{
'success': False,
'error': serializer.errors
},
status=400
)
class RoleDeleteApiView(views.APIView):
permissions_classes = [HasRolePermission]
def delete(self, request, id):
obj = get_object_or_404(Role, id=id)
obj.delete()
return Response({'success': True, 'message': 'deleted'}, status=204)