feat(itam): Add endpoint for ITAMAssetBase

ref: #741 #692
This commit is contained in:
2025-05-06 03:58:01 +09:30
parent 8473d00148
commit f144e0b8ef
3 changed files with 88 additions and 9 deletions

View File

@ -85,12 +85,6 @@ class ReactUIMetadata(OverRideJSONAPIMetadata):
app_namespace = ''
if getattr(view, 'model', None):
if getattr(view.model, 'get_app_namespace', None):
app_namespace = view.model().get_app_namespace()
base_model = getattr(view, 'base_model', None)
if base_model is not None:
@ -103,6 +97,13 @@ class ReactUIMetadata(OverRideJSONAPIMetadata):
app_namespace = base_model.app_namespace + ':'
if getattr(view, 'model', None):
if getattr(view.model, 'get_app_namespace', None):
app_namespace = view.model().get_app_namespace()
if view.kwargs.get('pk', None) is not None:
qs = view.get_queryset()[0]
@ -629,6 +630,17 @@ class ReactUIMetadata(OverRideJSONAPIMetadata):
}
})
if request.feature_flag['2025-00007']:
nav['itam']['pages'] = {
'view_itamassetbase': {
"display_name": "IT Assets",
"name": "itasset",
"link": "/itam/it_asset"
},
**nav['itam']['pages']
}
if request.feature_flag['2025-00006']:
nav['assistance']['pages'].update({

View File

@ -226,8 +226,8 @@ router.register('core/(?P<item_class>[a-z_]+)/(?P<item_id>[0-9]+)/item_ticket',
router.register('itam', itam_index_v2.Index, basename='_api_v2_itam_home')
# from accounting.viewsets import asset
# router.register('itam/(?P<asset_model>device)?', asset.ViewSet, feature_flag = '2025-00004', basename='_api_v2_device')
from accounting.viewsets import asset
router.register('itam/(?P<asset_model>[it_asset]+)', asset.ViewSet, feature_flag = '2025-00007', basename='_api_v2_itam_asset')
router.register('itam/device', device_v2.ViewSet, basename='_api_v2_device')
router.register('itam/device/(?P<device_id>[0-9]+)/operating_system', device_operating_system.ViewSet, basename='_api_v2_device_operating_system')

View File

@ -1,6 +1,8 @@
from django.apps import apps
from django.db import models
from rest_framework.reverse import reverse
from accounting.models.asset_base import AssetBase
@ -87,7 +89,56 @@ class ITAMAssetBase(
)
page_layout: list = []
page_layout: list = [
{
"name": "Details",
"slug": "details",
"sections": [
{
"layout": "double",
"left": [
'organization',
'asset_type',
'itam_type',
'asset_number',
'serial_number',
],
"right": [
'model_notes',
'created',
'modified',
]
}
]
},
{
"name": "Knowledge Base",
"slug": "kb_articles",
"sections": [
{
"layout": "table",
"field": "knowledge_base",
}
]
},
{
"name": "Tickets",
"slug": "tickets",
"sections": [
{
"layout": "table",
"field": "tickets",
}
],
},
{
"name": "Notes",
"slug": "notes",
"sections": []
},
]
table_fields: list = [
'id',
@ -108,6 +159,22 @@ class ITAMAssetBase(
return self._meta.verbose_name + ' - ' + self.asset_number
def get_url( self, request = None ) -> str:
kwargs = self.get_url_kwargs()
url_path_name = '_api_v2_itam_asset'
if request:
return reverse(f"v2:{url_path_name}-detail", request=request, kwargs = kwargs )
return reverse(f"v2:{url_path_name}-detail", kwargs = kwargs )
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):