56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
from rest_framework import serializers
|
|
|
|
from netbox.api.serializers import NetBoxModelSerializer
|
|
from netbox_slm.models import (
|
|
SoftwareProduct, SoftwareProductVersion, SoftwareProductInstallation,
|
|
)
|
|
|
|
|
|
class SoftwareProductSerializer(NetBoxModelSerializer):
|
|
display = serializers.SerializerMethodField()
|
|
url = serializers.HyperlinkedIdentityField(
|
|
view_name="plugins-api:netbox_slm-api:softwareproduct-detail"
|
|
)
|
|
|
|
class Meta:
|
|
model = SoftwareProduct
|
|
fields = [
|
|
'id', 'display', 'url', 'name', 'tags', 'custom_field_data', 'created', 'last_updated',
|
|
]
|
|
|
|
def get_display(self, obj):
|
|
return f"{obj.manufacturer.name} - {obj.name}"
|
|
|
|
|
|
class SoftwareProductVersionSerializer(NetBoxModelSerializer):
|
|
display = serializers.SerializerMethodField()
|
|
url = serializers.HyperlinkedIdentityField(
|
|
view_name="plugins-api:netbox_slm-api:softwareproductversion-detail"
|
|
)
|
|
|
|
class Meta:
|
|
model = SoftwareProductVersion
|
|
fields = [
|
|
'id', 'display', 'url', 'name', 'software_product', 'tags', 'custom_field_data', 'created', 'last_updated',
|
|
]
|
|
|
|
def get_display(self, obj):
|
|
return obj.name
|
|
|
|
|
|
class SoftwareProductInstallationSerializer(NetBoxModelSerializer):
|
|
display = serializers.SerializerMethodField()
|
|
url = serializers.HyperlinkedIdentityField(
|
|
view_name="plugins-api:netbox_slm-api:softwareproductinstallation-detail"
|
|
)
|
|
|
|
class Meta:
|
|
model = SoftwareProductInstallation
|
|
fields = [
|
|
'id', 'display', 'url', 'device', 'virtualmachine', 'software_product', 'version', 'tags',
|
|
'custom_field_data', 'created', 'last_updated',
|
|
]
|
|
|
|
def get_display(self, obj):
|
|
return obj
|