feat(accounting): Notes Viewset for AssetBase

ref: #741 #737
This commit is contained in:
2025-05-05 16:24:00 +09:30
parent d6290471ba
commit 37a18d3c6e
2 changed files with 63 additions and 1 deletions

View File

@ -3,7 +3,8 @@ from django.apps import apps
from centurion_feature_flag.urls.routers import APIRootView, DefaultRouter
from accounting.viewsets import (
asset
asset,
asset_notes,
)
@ -42,6 +43,7 @@ asset_type_names = str(asset_type_names)[:-1]
if not asset_type_names:
asset_type_names = 'none'
router.register('asset/(?P<model_id>[0-9]+)/notes', asset_notes.ViewSet, feature_flag = '2025-00004', basename='_api_v2_asset_note')
router.register(f'asset/(?P<asset_model>[{asset_type_names}]+)?', asset.ViewSet, feature_flag = '2025-00004', basename='_api_v2_asset_sub')
router.register('asset', asset.NoDocsViewSet, feature_flag = '2025-00004', basename='_api_v2_asset')

View File

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