from apps.customer.models import ShiveAshenaei as ShiveAshenaeiModel from rest_framework.views import APIView from rest_framework import generics from utils.get_user_workspace import get_user_workspace_uuid, get_user_workspace from utils import custom_permissions from rest_framework.permissions import IsAuthenticated from rest_framework import serializers from apps.customer.services import create_shive_ashenaei, delete_shive_ashenaei from apps.customer.selectors import list_shive_ashenaei, retrieve_shive_ashenaei from rest_framework.response import Response from rest_framework import status class ShiveAshenaeiCreateApi(APIView): permission_classes = (IsAuthenticated, custom_permissions.WorkspaceAdminPermission) class InputSerializer(serializers.Serializer): name = serializers.CharField(max_length=20) def post(self, request): serializer = self.InputSerializer(data=request.data) serializer.is_valid(raise_exception=True) user_workspace = get_user_workspace(request=request) name = serializer.validated_data.get create_shive_ashenaei(name=name, workspace=user_workspace) return Response(status=status.HTTP_201_CREATED) class ShiveAshenaeiDeleteApi(APIView): permission_classes = (IsAuthenticated, custom_permissions.WorkspaceAdminPermission) def delete(self, request, shive_id: int): user_workspace_uuid = get_user_workspace_uuid(request=request) delete_shive_ashenaei(shive_id=shive_id, workspace_uuid=user_workspace_uuid) return Response(status=status.HTTP_200_OK) class ShiveAshenaeiRetrieveApi(APIView): permission_classes = (IsAuthenticated, custom_permissions.WorkspaceOperatorPermission, ) class OutputSerializer(serializers.ModelSerializer): class Meta: model = ShiveAshenaeiModel fields = '__all__' def get(self, request, shive_id: int): user_workspace_uuid = get_user_workspace_uuid(request) responsible_group_obj = retrieve_shive_ashenaei(shive_id=shive_id, workspace_uuid=user_workspace_uuid) output = self.OutputSerializer(responsible_group_obj) return Response(data=output.data, status=status.HTTP_200_OK) class ShiveAshenaeiListApi(generics.ListAPIView): permission_classes = (IsAuthenticated, custom_permissions.WorkspaceOperatorPermission) class OutputSerializer(serializers.ModelSerializer): class Meta: model = ShiveAshenaeiModel fields = '__all__' serializer_class = OutputSerializer def get_queryset(self): user_workspace_uuid = get_user_workspace_uuid(self.request) return list_shive_ashenaei(workspace_uuid=user_workspace_uuid)