Files
ibapp-backend/core/apps/accounts/views/role.py
2025-09-19 16:04:50 +05:00

74 lines
2.2 KiB
Python

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
from core.apps.accounts.models.role import Role
from core.apps.accounts.serializers import role as serializers
class RoleListApiView(generics.ListAPIView):
serializer_class = serializers.RoleListSerializer
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)