control one permission with same name for each page

This commit is contained in:
2025-06-08 14:58:19 +03:30
parent 3e2375582c
commit 7cd3f992ae
4 changed files with 39 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework.permissions import AllowAny, IsAuthenticated
from apps.core.exceptions import ConflictException
from rest_framework.exceptions import APIException
from apps.authorization.api.v1.serializers import (
RoleSerializer,
@@ -64,6 +65,16 @@ class PermissionViewSet(viewsets.ModelViewSet):
filter_backends = [filters.SearchFilter]
search_fields = ['page__name', ]
def create(self, request, *args, **kwargs):
if self.queryset.filter(name=request.data['name'], page_id=request.data['page']).exists():
raise ConflictException('a permission with this page exists.')
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class UserRelationViewSet(viewsets.ModelViewSet):
""" Crud Operations for User Relations """