feat(itim): Porte Notes ViewSet

ref: #526 #536
This commit is contained in:
2025-02-07 20:35:27 +09:30
parent 9ea8422007
commit b42a5a9abb
3 changed files with 75 additions and 2 deletions

View File

@ -72,7 +72,13 @@ class PortModelSerializer(
'model_pk': item.pk
}
),
'notes': reverse("v2:_api_v2_port_notes-list", request=self._context['view'].request, kwargs={'port_id': item.pk}),
'notes': reverse(
"v2:_api_v2_port_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}

View File

@ -0,0 +1,66 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
from core.viewsets.model_notes import ModelNoteViewSet
from itim.serializers.port_notes import (
PortNotes,
PortNoteModelSerializer,
PortNoteViewSerializer
)
@extend_schema_view(
create=extend_schema(
summary = 'Add a note to a Port',
description = '',
responses = {
201: OpenApiResponse(description='created', response=PortNoteViewSerializer),
400: OpenApiResponse(description='Validation failed.'),
403: OpenApiResponse(description='User is missing create permissions'),
}
),
destroy = extend_schema(
summary = 'Delete a Port note',
description = ''
),
list = extend_schema(
summary = 'Fetch all Port notes',
description='',
),
retrieve = extend_schema(
summary = 'Fetch a single Port note',
description='',
),
update = extend_schema(exclude = True),
partial_update = extend_schema(
summary = 'Update a Port note',
description = ''
),
)
class ViewSet(ModelNoteViewSet):
model = PortNotes
def get_serializer_class(self):
if self.serializer_class is not None:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
self.serializer_class = PortNoteViewSerializer
else:
self.serializer_class = PortNoteModelSerializer
return self.serializer_class