Skip to content
Open
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
39 changes: 39 additions & 0 deletions src/api-engine/node/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
from typing import Optional

from drf_yasg.utils import swagger_auto_schema
from rest_framework import viewsets, status
from rest_framework.permissions import IsAuthenticated
Expand All @@ -6,6 +9,7 @@
from api.common import ok
from api.common.response import make_response_serializer
from api.utils.common import with_common_response
from common.responses import err
Comment on lines 9 to +12
from common.serializers import PageQuerySerializer
from node.models import Node
from node.serializers import NodeList, NodeCreateBody, NodeID, NodeResponse
Expand Down Expand Up @@ -53,3 +57,38 @@ def create(self, request):
status=status.HTTP_201_CREATED,
data=ok(NodeID(serializer.save().__dict__).data),
)

@swagger_auto_schema(
operation_summary="Retrieve a node by ID",
responses=with_common_response(
{status.HTTP_200_OK: make_response_serializer(NodeResponse)}
),
)
def retrieve(self, request, pk: Optional[str] = None):
try:
node = Node.objects.get(pk=pk, organization=request.user.organization)
except Node.DoesNotExist:
Comment on lines +67 to +70
return Response(
status=status.HTTP_404_NOT_FOUND,
data=err("Node not found"),
)
return Response(
status=status.HTTP_200_OK,
data=ok(NodeResponse(node, context={"organization": request.user.organization}).data),
)

@swagger_auto_schema(
operation_summary="Delete a node by ID",
responses=with_common_response(
{status.HTTP_204_NO_CONTENT: "No Content"}
),
)
def destroy(self, request, pk: Optional[str] = None):
try:
Node.objects.get(pk=pk, organization=request.user.organization).delete()
except Node.DoesNotExist:
Comment on lines +86 to +89
return Response(
status=status.HTTP_404_NOT_FOUND,
data=err("Node not found"),
)
return Response(status=status.HTTP_204_NO_CONTENT)
Loading