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

@ -80,6 +80,7 @@ from itim.viewsets import (
cluster_type_notes, cluster_type_notes,
incident, incident,
port as port_v2, port as port_v2,
port_notes,
problem, problem,
service as service_v2, service as service_v2,
service_cluster, service_cluster,
@ -195,7 +196,7 @@ router.register('settings/knowledge_base_category', knowledge_base_category_v2.V
router.register('settings/manufacturer', manufacturer_v2.ViewSet, basename='_api_v2_manufacturer') router.register('settings/manufacturer', manufacturer_v2.ViewSet, basename='_api_v2_manufacturer')
router.register('settings/manufacturer/(?P<model_id>[0-9]+)/notes', manufacturer_notes.ViewSet, basename='_api_v2_manufacturer_note') router.register('settings/manufacturer/(?P<model_id>[0-9]+)/notes', manufacturer_notes.ViewSet, basename='_api_v2_manufacturer_note')
router.register('settings/port', port_v2.ViewSet, basename='_api_v2_port') router.register('settings/port', port_v2.ViewSet, basename='_api_v2_port')
# router.register('settings/port/(?P<port_id>[0-9]+)/notes', notes_v2.ViewSet, basename='_api_v2_port_notes') router.register('settings/port/(?P<model_id>[0-9]+)/notes', port_notes.ViewSet, basename='_api_v2_port_note')
router.register('settings/project_state', project_state_v2.ViewSet, basename='_api_v2_project_state') router.register('settings/project_state', project_state_v2.ViewSet, basename='_api_v2_project_state')
router.register('settings/project_type', project_type_v2.ViewSet, basename='_api_v2_project_type') router.register('settings/project_type', project_type_v2.ViewSet, basename='_api_v2_project_type')
router.register('settings/software_category', software_category_v2.ViewSet, basename='_api_v2_software_category') router.register('settings/software_category', software_category_v2.ViewSet, basename='_api_v2_software_category')

View File

@ -72,7 +72,13 @@ class PortModelSerializer(
'model_pk': item.pk '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