82 lines
3.0 KiB
Python
82 lines
3.0 KiB
Python
from rest_framework.views import APIView
|
|
from rest_framework import generics
|
|
from rest_framework import serializers
|
|
from rest_framework.response import Response
|
|
from apps.customer.services import create_responsible_group, delete_responsible_group
|
|
from apps.customer.selectors import retrieve_responsible_group, list_responsible_group
|
|
from utils.get_user_workspace import get_user_workspace_uuid, get_user_workspace
|
|
from rest_framework import status
|
|
from utils import custom_permissions
|
|
from apps.customer.models import ResponsibleGroup
|
|
from rest_framework.permissions import IsAuthenticated
|
|
|
|
|
|
class ResponsibleGroupRetrieveApi(APIView):
|
|
|
|
permission_classes = (IsAuthenticated, custom_permissions.WorkspaceOperatorPermission, )
|
|
|
|
class OutputSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ResponsibleGroup
|
|
fields = '__all__'
|
|
|
|
def get(self, request, responsible_group_id: int):
|
|
|
|
user_workspace_uuid = get_user_workspace_uuid(request)
|
|
responsible_group_obj = retrieve_responsible_group(responsible_group_id=responsible_group_id, workspace_uuid=user_workspace_uuid)
|
|
|
|
output = self.OutputSerializer(responsible_group_obj)
|
|
return Response(data=output.data, status=status.HTTP_200_OK)
|
|
|
|
|
|
class ResponsibleGroupListApi(generics.ListAPIView):
|
|
|
|
permission_classes = (IsAuthenticated, custom_permissions.WorkspaceOperatorPermission, )
|
|
|
|
class OutputSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ResponsibleGroup
|
|
fields = '__all__'
|
|
|
|
serializer_class = OutputSerializer
|
|
|
|
def get_queryset(self):
|
|
user_workspace_uuid = get_user_workspace_uuid(self.request)
|
|
return list_responsible_group(workspace_uuid=user_workspace_uuid)
|
|
|
|
|
|
class ResponsibleGroupCreateApi(APIView):
|
|
|
|
permission_classes = (IsAuthenticated, custom_permissions.WorkspaceAdminPermission,)
|
|
|
|
class InputSerializer(serializers.Serializer):
|
|
name = serializers.CharField(max_length=20)
|
|
|
|
class OutputSerializer(serializers.Serializer):
|
|
name = serializers.CharField(max_length=20)
|
|
|
|
def post(self, request):
|
|
serializer = self.InputSerializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
group_name = serializer.validated_data.get
|
|
user_workspace = get_user_workspace(request=request)
|
|
|
|
responsible_group_obj = create_responsible_group(name=group_name, workspace=user_workspace)
|
|
output = self.OutputSerializer(responsible_group_obj)
|
|
|
|
return Response(data=output.data, status=status.HTTP_201_CREATED)
|
|
|
|
|
|
class ResponsibleGroupDeleteApi(APIView):
|
|
|
|
permission_classes = (IsAuthenticated, custom_permissions.WorkspaceAdminPermission,)
|
|
|
|
def delete(self, request, responsible_group_id: int):
|
|
|
|
user_workspace_uuid = get_user_workspace_uuid(request)
|
|
delete_responsible_group(responsible_group_id=responsible_group_id, workspace_uuid=user_workspace_uuid)
|
|
|
|
return Response(status=status.HTTP_200_OK)
|
|
|