from rest_framework import serializers from netbox.api.serializers import NetBoxModelSerializer from netbox_slm.models import SoftwareProduct, SoftwareProductVersion, SoftwareProductInstallation, SoftwareLicense 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} - {obj}" 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 f"{obj}" 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 f"{obj}" class SoftwareLicenseSerializer(NetBoxModelSerializer): display = serializers.SerializerMethodField() url = serializers.HyperlinkedIdentityField(view_name="plugins-api:netbox_slm-api:softwarelicense-detail") class Meta: model = SoftwareLicense fields = [ "id", "display", "url", "name", "description", "type", "stored_location", "start_date", "expiration_date", "software_product", "version", "installation", "tags", "custom_field_data", "created", "last_updated", ] def get_display(self, obj): return f"{obj}"