mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-23 05:42:17 -06:00
Converted nested serializers to HyperlinkedModelSerializer
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from dcim.api.serializers import DeviceNestedSerializer, NestedInterfaceSerializer, SiteNestedSerializer
|
||||
from dcim.api.serializers import NestedDeviceSerializer, ChildInterfaceSerializer, NestedSiteSerializer
|
||||
from extras.api.serializers import CustomFieldSerializer
|
||||
from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
|
||||
from tenancy.api.serializers import TenantNestedSerializer
|
||||
from tenancy.api.serializers import NestedTenantSerializer
|
||||
|
||||
|
||||
#
|
||||
@@ -11,26 +11,18 @@ from tenancy.api.serializers import TenantNestedSerializer
|
||||
#
|
||||
|
||||
class VRFSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
tenant = TenantNestedSerializer()
|
||||
tenant = NestedTenantSerializer()
|
||||
|
||||
class Meta:
|
||||
model = VRF
|
||||
fields = ['id', 'name', 'rd', 'tenant', 'enforce_unique', 'description', 'custom_fields']
|
||||
|
||||
|
||||
class VRFNestedSerializer(VRFSerializer):
|
||||
class NestedVRFSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(VRFSerializer.Meta):
|
||||
fields = ['id', 'name', 'rd']
|
||||
|
||||
|
||||
class VRFTenantSerializer(VRFSerializer):
|
||||
"""
|
||||
Include tenant serializer. Useful for determining tenant inheritance for Prefixes and IPAddresses.
|
||||
"""
|
||||
|
||||
class Meta(VRFSerializer.Meta):
|
||||
fields = ['id', 'name', 'rd', 'tenant']
|
||||
class Meta:
|
||||
model = VRF
|
||||
fields = ['id', 'url', 'name', 'rd']
|
||||
|
||||
|
||||
#
|
||||
@@ -44,10 +36,11 @@ class RoleSerializer(serializers.ModelSerializer):
|
||||
fields = ['id', 'name', 'slug', 'weight']
|
||||
|
||||
|
||||
class RoleNestedSerializer(RoleSerializer):
|
||||
class NestedRoleSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(RoleSerializer.Meta):
|
||||
fields = ['id', 'name', 'slug']
|
||||
class Meta:
|
||||
model = Role
|
||||
fields = ['id', 'url', 'name', 'slug']
|
||||
|
||||
|
||||
#
|
||||
@@ -61,10 +54,11 @@ class RIRSerializer(serializers.ModelSerializer):
|
||||
fields = ['id', 'name', 'slug', 'is_private']
|
||||
|
||||
|
||||
class RIRNestedSerializer(RIRSerializer):
|
||||
class NestedRIRSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(RIRSerializer.Meta):
|
||||
fields = ['id', 'name', 'slug']
|
||||
class Meta:
|
||||
model = RIR
|
||||
fields = ['id', 'url', 'name', 'slug']
|
||||
|
||||
|
||||
#
|
||||
@@ -72,17 +66,18 @@ class RIRNestedSerializer(RIRSerializer):
|
||||
#
|
||||
|
||||
class AggregateSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
rir = RIRNestedSerializer()
|
||||
rir = NestedRIRSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Aggregate
|
||||
fields = ['id', 'family', 'prefix', 'rir', 'date_added', 'description', 'custom_fields']
|
||||
|
||||
|
||||
class AggregateNestedSerializer(AggregateSerializer):
|
||||
class NestedAggregateSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(AggregateSerializer.Meta):
|
||||
fields = ['id', 'family', 'prefix']
|
||||
model = Aggregate
|
||||
fields = ['id', 'url', 'family', 'prefix']
|
||||
|
||||
|
||||
#
|
||||
@@ -90,17 +85,18 @@ class AggregateNestedSerializer(AggregateSerializer):
|
||||
#
|
||||
|
||||
class VLANGroupSerializer(serializers.ModelSerializer):
|
||||
site = SiteNestedSerializer()
|
||||
site = NestedSiteSerializer()
|
||||
|
||||
class Meta:
|
||||
model = VLANGroup
|
||||
fields = ['id', 'name', 'slug', 'site']
|
||||
|
||||
|
||||
class VLANGroupNestedSerializer(VLANGroupSerializer):
|
||||
class NestedVLANGroupSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(VLANGroupSerializer.Meta):
|
||||
fields = ['id', 'name', 'slug']
|
||||
class Meta:
|
||||
model = VLANGroup
|
||||
fields = ['id', 'url', 'name', 'slug']
|
||||
|
||||
|
||||
#
|
||||
@@ -108,21 +104,24 @@ class VLANGroupNestedSerializer(VLANGroupSerializer):
|
||||
#
|
||||
|
||||
class VLANSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
site = SiteNestedSerializer()
|
||||
group = VLANGroupNestedSerializer()
|
||||
tenant = TenantNestedSerializer()
|
||||
role = RoleNestedSerializer()
|
||||
site = NestedSiteSerializer()
|
||||
group = NestedVLANGroupSerializer()
|
||||
tenant = NestedTenantSerializer()
|
||||
role = NestedRoleSerializer()
|
||||
|
||||
class Meta:
|
||||
model = VLAN
|
||||
fields = ['id', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'display_name',
|
||||
'custom_fields']
|
||||
fields = [
|
||||
'id', 'site', 'group', 'vid', 'name', 'tenant', 'status', 'role', 'description', 'display_name',
|
||||
'custom_fields',
|
||||
]
|
||||
|
||||
|
||||
class VLANNestedSerializer(VLANSerializer):
|
||||
class NestedVLANSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(VLANSerializer.Meta):
|
||||
fields = ['id', 'vid', 'name', 'display_name']
|
||||
class Meta:
|
||||
model = VLAN
|
||||
fields = ['id', 'url', 'vid', 'name', 'display_name']
|
||||
|
||||
|
||||
#
|
||||
@@ -130,22 +129,25 @@ class VLANNestedSerializer(VLANSerializer):
|
||||
#
|
||||
|
||||
class PrefixSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
site = SiteNestedSerializer()
|
||||
vrf = VRFTenantSerializer()
|
||||
tenant = TenantNestedSerializer()
|
||||
vlan = VLANNestedSerializer()
|
||||
role = RoleNestedSerializer()
|
||||
site = NestedSiteSerializer()
|
||||
vrf = NestedVRFSerializer()
|
||||
tenant = NestedTenantSerializer()
|
||||
vlan = NestedVLANSerializer()
|
||||
role = NestedRoleSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Prefix
|
||||
fields = ['id', 'family', 'prefix', 'site', 'vrf', 'tenant', 'vlan', 'status', 'role', 'is_pool', 'description',
|
||||
'custom_fields']
|
||||
fields = [
|
||||
'id', 'family', 'prefix', 'site', 'vrf', 'tenant', 'vlan', 'status', 'role', 'is_pool', 'description',
|
||||
'custom_fields',
|
||||
]
|
||||
|
||||
|
||||
class PrefixNestedSerializer(PrefixSerializer):
|
||||
class NestedPrefixSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(PrefixSerializer.Meta):
|
||||
fields = ['id', 'family', 'prefix']
|
||||
class Meta:
|
||||
model = Prefix
|
||||
fields = ['id', 'url', 'family', 'prefix']
|
||||
|
||||
|
||||
#
|
||||
@@ -153,23 +155,26 @@ class PrefixNestedSerializer(PrefixSerializer):
|
||||
#
|
||||
|
||||
class IPAddressSerializer(CustomFieldSerializer, serializers.ModelSerializer):
|
||||
vrf = VRFTenantSerializer()
|
||||
tenant = TenantNestedSerializer()
|
||||
interface = NestedInterfaceSerializer()
|
||||
vrf = NestedVRFSerializer()
|
||||
tenant = NestedTenantSerializer()
|
||||
interface = ChildInterfaceSerializer()
|
||||
|
||||
class Meta:
|
||||
model = IPAddress
|
||||
fields = ['id', 'family', 'address', 'vrf', 'tenant', 'status', 'interface', 'description', 'nat_inside',
|
||||
'nat_outside', 'custom_fields']
|
||||
fields = [
|
||||
'id', 'family', 'address', 'vrf', 'tenant', 'status', 'interface', 'description', 'nat_inside',
|
||||
'nat_outside', 'custom_fields',
|
||||
]
|
||||
|
||||
|
||||
class IPAddressNestedSerializer(IPAddressSerializer):
|
||||
class NestedIPAddressSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
||||
class Meta(IPAddressSerializer.Meta):
|
||||
fields = ['id', 'family', 'address']
|
||||
class Meta:
|
||||
model = IPAddress
|
||||
fields = ['id', 'url', 'family', 'address']
|
||||
|
||||
IPAddressSerializer._declared_fields['nat_inside'] = IPAddressNestedSerializer()
|
||||
IPAddressSerializer._declared_fields['nat_outside'] = IPAddressNestedSerializer()
|
||||
IPAddressSerializer._declared_fields['nat_inside'] = NestedIPAddressSerializer()
|
||||
IPAddressSerializer._declared_fields['nat_outside'] = NestedIPAddressSerializer()
|
||||
|
||||
|
||||
#
|
||||
@@ -177,15 +182,9 @@ IPAddressSerializer._declared_fields['nat_outside'] = IPAddressNestedSerializer(
|
||||
#
|
||||
|
||||
class ServiceSerializer(serializers.ModelSerializer):
|
||||
device = DeviceNestedSerializer()
|
||||
ipaddresses = IPAddressNestedSerializer(many=True)
|
||||
device = NestedDeviceSerializer()
|
||||
ipaddresses = NestedIPAddressSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Service
|
||||
fields = ['id', 'device', 'name', 'port', 'protocol', 'ipaddresses', 'description']
|
||||
|
||||
|
||||
class ServiceNestedSerializer(ServiceSerializer):
|
||||
|
||||
class Meta(ServiceSerializer.Meta):
|
||||
fields = ['id', 'name', 'port', 'protocol']
|
||||
|
||||
Reference in New Issue
Block a user