Skip to content
This repository has been archived by the owner on Nov 21, 2024. It is now read-only.

workflowticket serializer: use the serializer in the create function #92

Merged
merged 1 commit into from
Aug 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions backoffice/backoffice/workflows/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

class WorkflowTicketSerializer(serializers.ModelSerializer):
ticket_url = serializers.SerializerMethodField()
workflow_id = serializers.PrimaryKeyRelatedField(queryset=Workflow.objects.all())

class Meta:
model = WorkflowTicket
Expand Down
26 changes: 6 additions & 20 deletions backoffice/backoffice/workflows/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ def get_queryset(self):


class WorkflowTicketViewSet(viewsets.ViewSet):
serializer_class = WorkflowTicketSerializer

def retrieve(self, request, *args, **kwargs):
workflow_id = kwargs.get("pk")
ticket_type = request.query_params.get("ticket_type")
Expand All @@ -68,7 +70,7 @@ def retrieve(self, request, *args, **kwargs):
workflow_ticket = WorkflowTicket.objects.get(
workflow_id=workflow_id, ticket_type=ticket_type
)
serializer = WorkflowTicketSerializer(workflow_ticket)
serializer = self.serializer_class(workflow_ticket)
return Response(serializer.data)
except WorkflowTicket.DoesNotExist:
return Response(
Expand All @@ -77,27 +79,11 @@ def retrieve(self, request, *args, **kwargs):
)

def create(self, request, *args, **kwargs):
workflow_id = request.data.get("workflow_id")
ticket_type = request.data.get("ticket_type")
ticket_id = request.data.get("ticket_id")

if not all([workflow_id, ticket_type, ticket_id]):
return Response(
{"error": "Workflow_id, ticket_id and ticket_type are required."},
status=status.HTTP_400_BAD_REQUEST,
)
serializer = self.serializer_class(data=request.data)

try:
workflow = Workflow.objects.get(id=workflow_id)
workflow_ticket = WorkflowTicket.objects.create(
workflow_id=workflow, ticket_id=ticket_id, ticket_type=ticket_type
)
serializer = WorkflowTicketSerializer(workflow_ticket)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
except Exception as e:
return Response(
{"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR
)


class AuthorWorkflowViewSet(viewsets.ViewSet):
Expand Down
5 changes: 3 additions & 2 deletions backoffice/backoffice/workflows/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,8 +242,9 @@ def test_create_missing_params(self):
)

assert response.status_code == 400
assert response.data == {
"error": "Workflow_id, ticket_id and ticket_type are required."
assert response.json() == {
"workflow_id": ["This field is required."],
"ticket_id": ["This field is required."],
}

def test_create_happy_flow(self):
Expand Down
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.