mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-09 00:58:16 -06:00
15156 add url display_url to base class
This commit is contained in:
parent
cdbb816095
commit
8b80b5e1cd
@ -27,7 +27,7 @@ Serializers are responsible for converting Python objects to JSON data suitable
|
||||
|
||||
#### Example
|
||||
|
||||
To create a serializer for a plugin model, subclass `NetBoxModelSerializer` in `api/serializers.py`. Specify the model class and the fields to include within the serializer's `Meta` class. It is generally advisable to include a `url` attribute on each serializer. This will render the direct link to access the object being rendered.
|
||||
To create a serializer for a plugin model, subclass `NetBoxModelSerializer` in `api/serializers.py`. Specify the model class and the fields to include within the serializer's `Meta` class.
|
||||
|
||||
```python
|
||||
# api/serializers.py
|
||||
@ -36,12 +36,7 @@ from netbox.api.serializers import NetBoxModelSerializer
|
||||
from my_plugin.models import MyModel
|
||||
|
||||
class MyModelSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='plugins-api:myplugin-api:mymodel-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='plugins:myplugin:mymodel'
|
||||
)
|
||||
foo = SiteSerializer(nested=True, allow_null=True)
|
||||
|
||||
class Meta:
|
||||
model = MyModel
|
||||
@ -66,12 +61,7 @@ from netbox.api.serializers import WritableNestedSerializer
|
||||
from my_plugin.models import MyModel
|
||||
|
||||
class NestedMyModelSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='plugins-api:myplugin-api:mymodel-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='plugins:myplugin:mymodel'
|
||||
)
|
||||
foo = SiteSerializer(nested=True, allow_null=True)
|
||||
|
||||
class Meta:
|
||||
model = MyModel
|
||||
|
@ -20,8 +20,6 @@ __all__ = [
|
||||
#
|
||||
|
||||
class NestedProviderNetworkSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:providernetwork-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:providernetwork')
|
||||
|
||||
class Meta:
|
||||
model = ProviderNetwork
|
||||
@ -36,8 +34,6 @@ class NestedProviderNetworkSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('circuit_count',),
|
||||
)
|
||||
class NestedProviderSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:provider')
|
||||
circuit_count = RelatedObjectCountField('circuits')
|
||||
|
||||
class Meta:
|
||||
@ -50,8 +46,6 @@ class NestedProviderSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedProviderAccountSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provideraccount-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:provideraccount')
|
||||
|
||||
class Meta:
|
||||
model = ProviderAccount
|
||||
@ -66,8 +60,6 @@ class NestedProviderAccountSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('circuit_count',),
|
||||
)
|
||||
class NestedCircuitTypeSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuittype')
|
||||
circuit_count = RelatedObjectCountField('circuits')
|
||||
|
||||
class Meta:
|
||||
@ -76,8 +68,6 @@ class NestedCircuitTypeSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedCircuitSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuit')
|
||||
|
||||
class Meta:
|
||||
model = Circuit
|
||||
@ -85,8 +75,6 @@ class NestedCircuitSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedCircuitTerminationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuittermination')
|
||||
circuit = NestedCircuitSerializer()
|
||||
|
||||
class Meta:
|
||||
|
@ -18,8 +18,6 @@ __all__ = (
|
||||
|
||||
|
||||
class CircuitTypeSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuittype')
|
||||
|
||||
# Related object counts
|
||||
circuit_count = RelatedObjectCountField('circuits')
|
||||
@ -34,8 +32,6 @@ class CircuitTypeSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class CircuitCircuitTerminationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuittermination')
|
||||
site = SiteSerializer(nested=True, allow_null=True)
|
||||
provider_network = ProviderNetworkSerializer(nested=True, allow_null=True)
|
||||
|
||||
@ -48,8 +44,6 @@ class CircuitCircuitTerminationSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class CircuitSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuit')
|
||||
provider = ProviderSerializer(nested=True)
|
||||
provider_account = ProviderAccountSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
status = ChoiceField(choices=CircuitStatusChoices, required=False)
|
||||
@ -69,8 +63,6 @@ class CircuitSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class CircuitTerminationSerializer(NetBoxModelSerializer, CabledObjectSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:circuittermination')
|
||||
circuit = CircuitSerializer(nested=True)
|
||||
site = SiteSerializer(nested=True, required=False, allow_null=True)
|
||||
provider_network = ProviderNetworkSerializer(nested=True, required=False, allow_null=True)
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ProviderSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:provider')
|
||||
accounts = SerializedPKRelatedField(
|
||||
queryset=ProviderAccount.objects.all(),
|
||||
serializer=NestedProviderAccountSerializer,
|
||||
@ -44,8 +42,6 @@ class ProviderSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ProviderAccountSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provideraccount-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:provideraccount')
|
||||
provider = ProviderSerializer(nested=True)
|
||||
name = serializers.CharField(allow_blank=True, max_length=100, required=False, default='')
|
||||
|
||||
@ -59,8 +55,6 @@ class ProviderAccountSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ProviderNetworkSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:providernetwork-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='circuits:providernetwork')
|
||||
provider = ProviderSerializer(nested=True)
|
||||
|
||||
class Meta:
|
||||
|
@ -14,8 +14,6 @@ __all__ = (
|
||||
|
||||
|
||||
class NestedDataSourceSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='core-api:datasource-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='core:datasource')
|
||||
|
||||
class Meta:
|
||||
model = DataSource
|
||||
@ -23,8 +21,6 @@ class NestedDataSourceSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedDataFileSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='core-api:datafile-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='core:datafile')
|
||||
|
||||
class Meta:
|
||||
model = DataFile
|
||||
@ -32,8 +28,6 @@ class NestedDataFileSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedJobSerializer(serializers.ModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='core-api:job-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='core:job')
|
||||
status = ChoiceField(choices=JobStatusChoices)
|
||||
user = UserSerializer(
|
||||
nested=True,
|
||||
|
@ -13,12 +13,6 @@ __all__ = (
|
||||
|
||||
|
||||
class DataSourceSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='core-api:datasource-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='core:datasource'
|
||||
)
|
||||
type = ChoiceField(
|
||||
choices=get_data_backend_choices()
|
||||
)
|
||||
@ -40,12 +34,6 @@ class DataSourceSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class DataFileSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='core-api:datafile-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='core:datafile'
|
||||
)
|
||||
source = DataSourceSerializer(
|
||||
nested=True,
|
||||
read_only=True
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class JobSerializer(BaseModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='core-api:job-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='core:job')
|
||||
user = UserSerializer(
|
||||
nested=True,
|
||||
read_only=True
|
||||
|
@ -57,8 +57,6 @@ __all__ = [
|
||||
exclude_fields=('site_count',),
|
||||
)
|
||||
class NestedRegionSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:region')
|
||||
site_count = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -71,8 +69,6 @@ class NestedRegionSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('site_count',),
|
||||
)
|
||||
class NestedSiteGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:sitegroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:sitegroup')
|
||||
site_count = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -82,8 +78,6 @@ class NestedSiteGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedSiteSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:site-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:site')
|
||||
|
||||
class Meta:
|
||||
model = models.Site
|
||||
@ -98,8 +92,6 @@ class NestedSiteSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('rack_count',),
|
||||
)
|
||||
class NestedLocationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:location-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:location')
|
||||
rack_count = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -112,8 +104,6 @@ class NestedLocationSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('rack_count',),
|
||||
)
|
||||
class NestedRackRoleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rackrole')
|
||||
rack_count = RelatedObjectCountField('racks')
|
||||
|
||||
class Meta:
|
||||
@ -125,8 +115,6 @@ class NestedRackRoleSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('device_count',),
|
||||
)
|
||||
class NestedRackSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rack-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rack')
|
||||
device_count = RelatedObjectCountField('devices')
|
||||
|
||||
class Meta:
|
||||
@ -135,8 +123,6 @@ class NestedRackSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedRackReservationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackreservation-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rackreservation')
|
||||
user = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -155,8 +141,6 @@ class NestedRackReservationSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('devicetype_count',),
|
||||
)
|
||||
class NestedManufacturerSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:manufacturer')
|
||||
devicetype_count = RelatedObjectCountField('device_types')
|
||||
|
||||
class Meta:
|
||||
@ -168,8 +152,6 @@ class NestedManufacturerSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('device_count',),
|
||||
)
|
||||
class NestedDeviceTypeSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:devicetype')
|
||||
manufacturer = NestedManufacturerSerializer(read_only=True)
|
||||
device_count = RelatedObjectCountField('instances')
|
||||
|
||||
@ -179,8 +161,6 @@ class NestedDeviceTypeSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedModuleTypeSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:moduletype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:moduletype')
|
||||
manufacturer = NestedManufacturerSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -193,8 +173,6 @@ class NestedModuleTypeSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedConsolePortTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleporttemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.ConsolePortTemplate
|
||||
@ -202,8 +180,6 @@ class NestedConsolePortTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedConsoleServerPortTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverporttemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.ConsoleServerPortTemplate
|
||||
@ -211,8 +187,6 @@ class NestedConsoleServerPortTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedPowerPortTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerporttemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.PowerPortTemplate
|
||||
@ -220,8 +194,6 @@ class NestedPowerPortTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedPowerOutletTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlettemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.PowerOutletTemplate
|
||||
@ -229,8 +201,6 @@ class NestedPowerOutletTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedInterfaceTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interfacetemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.InterfaceTemplate
|
||||
@ -238,8 +208,6 @@ class NestedInterfaceTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedRearPortTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearporttemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.RearPortTemplate
|
||||
@ -247,8 +215,6 @@ class NestedRearPortTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedFrontPortTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontporttemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.FrontPortTemplate
|
||||
@ -256,8 +222,6 @@ class NestedFrontPortTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedModuleBayTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:modulebaytemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.ModuleBayTemplate
|
||||
@ -265,8 +229,6 @@ class NestedModuleBayTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedDeviceBayTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebaytemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = models.DeviceBayTemplate
|
||||
@ -274,8 +236,6 @@ class NestedDeviceBayTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedInventoryItemTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitemtemplate-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -291,8 +251,6 @@ class NestedInventoryItemTemplateSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('device_count', 'virtualmachine_count'),
|
||||
)
|
||||
class NestedDeviceRoleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:devicerole')
|
||||
device_count = RelatedObjectCountField('devices')
|
||||
virtualmachine_count = RelatedObjectCountField('virtual_machines')
|
||||
|
||||
@ -305,8 +263,6 @@ class NestedDeviceRoleSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('device_count', 'virtualmachine_count'),
|
||||
)
|
||||
class NestedPlatformSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:platform')
|
||||
device_count = RelatedObjectCountField('devices')
|
||||
virtualmachine_count = RelatedObjectCountField('virtual_machines')
|
||||
|
||||
@ -316,8 +272,6 @@ class NestedPlatformSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedDeviceSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:device')
|
||||
|
||||
class Meta:
|
||||
model = models.Device
|
||||
@ -325,8 +279,6 @@ class NestedDeviceSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class ModuleNestedModuleBaySerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:modulebay-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:modulebay')
|
||||
|
||||
class Meta:
|
||||
model = models.ModuleBay
|
||||
@ -334,8 +286,6 @@ class ModuleNestedModuleBaySerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class ModuleBayNestedModuleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:module-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:module')
|
||||
|
||||
class Meta:
|
||||
model = models.Module
|
||||
@ -343,8 +293,6 @@ class ModuleBayNestedModuleSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedModuleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:module-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:module')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
module_bay = ModuleNestedModuleBaySerializer(read_only=True)
|
||||
module_type = NestedModuleTypeSerializer(read_only=True)
|
||||
@ -355,8 +303,6 @@ class NestedModuleSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedConsoleServerPortSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:consoleserverport')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
@ -366,8 +312,6 @@ class NestedConsoleServerPortSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedConsolePortSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:consoleport')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
@ -377,8 +321,6 @@ class NestedConsolePortSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedPowerOutletSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlet-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:poweroutlet')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
@ -388,8 +330,6 @@ class NestedPowerOutletSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedPowerPortSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:powerport')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
@ -400,8 +340,6 @@ class NestedPowerPortSerializer(WritableNestedSerializer):
|
||||
|
||||
class NestedInterfaceSerializer(WritableNestedSerializer):
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:interface')
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -411,8 +349,6 @@ class NestedInterfaceSerializer(WritableNestedSerializer):
|
||||
|
||||
class NestedRearPortSerializer(WritableNestedSerializer):
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rearport')
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -422,8 +358,6 @@ class NestedRearPortSerializer(WritableNestedSerializer):
|
||||
|
||||
class NestedFrontPortSerializer(WritableNestedSerializer):
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:frontport')
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -432,8 +366,6 @@ class NestedFrontPortSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedModuleBaySerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:modulebay-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:modulebay')
|
||||
installed_module = ModuleBayNestedModuleSerializer(required=False, allow_null=True)
|
||||
|
||||
class Meta:
|
||||
@ -442,8 +374,6 @@ class NestedModuleBaySerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedDeviceBaySerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebay-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:devicebay')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -452,8 +382,6 @@ class NestedDeviceBaySerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedInventoryItemSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitem-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:inventoryitem')
|
||||
device = NestedDeviceSerializer(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -466,8 +394,6 @@ class NestedInventoryItemSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('inventoryitem_count',),
|
||||
)
|
||||
class NestedInventoryItemRoleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitemrole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:inventoryitemrole')
|
||||
inventoryitem_count = RelatedObjectCountField('inventory_items')
|
||||
|
||||
class Meta:
|
||||
@ -480,8 +406,6 @@ class NestedInventoryItemRoleSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedCableSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:cable-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:cable')
|
||||
|
||||
class Meta:
|
||||
model = models.Cable
|
||||
@ -496,8 +420,6 @@ class NestedCableSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('member_count',),
|
||||
)
|
||||
class NestedVirtualChassisSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:virtualchassis')
|
||||
master = NestedDeviceSerializer()
|
||||
member_count = serializers.IntegerField(read_only=True)
|
||||
|
||||
@ -514,8 +436,6 @@ class NestedVirtualChassisSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('powerfeed_count',),
|
||||
)
|
||||
class NestedPowerPanelSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerpanel-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:powerpanel')
|
||||
powerfeed_count = RelatedObjectCountField('powerfeeds')
|
||||
|
||||
class Meta:
|
||||
@ -524,8 +444,6 @@ class NestedPowerPanelSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedPowerFeedSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerfeed-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:powerfeed')
|
||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -534,8 +452,6 @@ class NestedPowerFeedSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedVirtualDeviceContextSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualdevicecontext-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:virtualdevicecontext')
|
||||
device = NestedDeviceSerializer()
|
||||
|
||||
class Meta:
|
||||
|
@ -21,8 +21,6 @@ __all__ = (
|
||||
|
||||
|
||||
class CableSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:cable-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:cable')
|
||||
a_terminations = GenericObjectSerializer(many=True, required=False)
|
||||
b_terminations = GenericObjectSerializer(many=True, required=False)
|
||||
status = ChoiceField(choices=LinkStatusChoices, required=False)
|
||||
@ -54,7 +52,6 @@ class TracedCableSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class CableTerminationSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:cabletermination-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
termination_type = ContentTypeField(
|
||||
queryset=ContentType.objects.filter(CABLE_TERMINATION_MODELS)
|
||||
|
@ -41,8 +41,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ConsoleServerPortSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleserverport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:consoleserverport')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -73,8 +71,6 @@ class ConsoleServerPortSerializer(NetBoxModelSerializer, CabledObjectSerializer,
|
||||
|
||||
|
||||
class ConsolePortSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:consoleport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:consoleport')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -105,8 +101,6 @@ class ConsolePortSerializer(NetBoxModelSerializer, CabledObjectSerializer, Conne
|
||||
|
||||
|
||||
class PowerPortSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:powerport')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -133,8 +127,6 @@ class PowerPortSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect
|
||||
|
||||
|
||||
class PowerOutletSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:poweroutlet-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:poweroutlet')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -172,8 +164,6 @@ class PowerOutletSerializer(NetBoxModelSerializer, CabledObjectSerializer, Conne
|
||||
|
||||
|
||||
class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:interface')
|
||||
device = DeviceSerializer(nested=True)
|
||||
vdcs = SerializedPKRelatedField(
|
||||
queryset=VirtualDeviceContext.objects.all(),
|
||||
@ -255,8 +245,6 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect
|
||||
|
||||
|
||||
class RearPortSerializer(NetBoxModelSerializer, CabledObjectSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rearport')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -280,8 +268,6 @@ class FrontPortRearPortSerializer(WritableNestedSerializer):
|
||||
"""
|
||||
NestedRearPortSerializer but with parent device omitted (since front and rear ports must belong to same device)
|
||||
"""
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rearport')
|
||||
|
||||
class Meta:
|
||||
model = RearPort
|
||||
@ -289,8 +275,6 @@ class FrontPortRearPortSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class FrontPortSerializer(NetBoxModelSerializer, CabledObjectSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:frontport-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:frontport')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -312,8 +296,6 @@ class FrontPortSerializer(NetBoxModelSerializer, CabledObjectSerializer):
|
||||
|
||||
|
||||
class ModuleBaySerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:modulebay-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:modulebay')
|
||||
device = DeviceSerializer(nested=True)
|
||||
installed_module = ModuleSerializer(
|
||||
nested=True,
|
||||
@ -332,8 +314,6 @@ class ModuleBaySerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class DeviceBaySerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebay-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:devicebay')
|
||||
device = DeviceSerializer(nested=True)
|
||||
installed_device = DeviceSerializer(nested=True, required=False, allow_null=True)
|
||||
|
||||
@ -347,8 +327,6 @@ class DeviceBaySerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class InventoryItemSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitem-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:inventoryitem')
|
||||
device = DeviceSerializer(nested=True)
|
||||
parent = serializers.PrimaryKeyRelatedField(queryset=InventoryItem.objects.all(), allow_null=True, default=None)
|
||||
role = InventoryItemRoleSerializer(nested=True, required=False, allow_null=True)
|
||||
|
@ -29,8 +29,6 @@ __all__ = (
|
||||
|
||||
|
||||
class DeviceSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:device-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:device')
|
||||
device_type = DeviceTypeSerializer(nested=True)
|
||||
role = DeviceRoleSerializer(nested=True)
|
||||
tenant = TenantSerializer(
|
||||
@ -121,8 +119,6 @@ class DeviceWithConfigContextSerializer(DeviceSerializer):
|
||||
|
||||
|
||||
class VirtualDeviceContextSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualdevicecontext-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:virtualdevicecontext')
|
||||
device = DeviceSerializer(nested=True)
|
||||
identifier = serializers.IntegerField(allow_null=True, max_value=32767, min_value=0, required=False, default=None)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
@ -145,8 +141,6 @@ class VirtualDeviceContextSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ModuleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:module-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:module')
|
||||
device = DeviceSerializer(nested=True)
|
||||
module_bay = NestedModuleBaySerializer()
|
||||
module_type = ModuleTypeSerializer(nested=True)
|
||||
|
@ -17,8 +17,6 @@ __all__ = (
|
||||
|
||||
|
||||
class DeviceTypeSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:devicetype')
|
||||
manufacturer = ManufacturerSerializer(nested=True)
|
||||
default_platform = PlatformSerializer(nested=True, required=False, allow_null=True)
|
||||
u_height = serializers.DecimalField(
|
||||
@ -64,8 +62,6 @@ class DeviceTypeSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ModuleTypeSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:moduletype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:moduletype')
|
||||
manufacturer = ManufacturerSerializer(nested=True)
|
||||
weight_unit = ChoiceField(choices=WeightUnitChoices, allow_blank=True, required=False, allow_null=True)
|
||||
|
||||
|
@ -10,8 +10,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ManufacturerSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:manufacturer')
|
||||
|
||||
# Related object counts
|
||||
devicetype_count = RelatedObjectCountField('device_types')
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class PlatformSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:platform')
|
||||
manufacturer = ManufacturerSerializer(nested=True, required=False, allow_null=True)
|
||||
config_template = ConfigTemplateSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
|
||||
|
@ -17,8 +17,6 @@ __all__ = (
|
||||
|
||||
|
||||
class PowerPanelSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerpanel-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:powerpanel')
|
||||
site = SiteSerializer(nested=True)
|
||||
location = LocationSerializer(
|
||||
nested=True,
|
||||
@ -40,8 +38,6 @@ class PowerPanelSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class PowerFeedSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerfeed-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:powerfeed')
|
||||
power_panel = PowerPanelSerializer(nested=True)
|
||||
rack = RackSerializer(
|
||||
nested=True,
|
||||
|
@ -20,8 +20,6 @@ __all__ = (
|
||||
|
||||
|
||||
class RackRoleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rackrole')
|
||||
|
||||
# Related object counts
|
||||
rack_count = RelatedObjectCountField('racks')
|
||||
@ -36,8 +34,6 @@ class RackRoleSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class RackSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rack-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rack')
|
||||
site = SiteSerializer(nested=True)
|
||||
location = LocationSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
@ -66,8 +62,6 @@ class RackSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class RackReservationSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackreservation-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:rackreservation')
|
||||
rack = RackSerializer(nested=True)
|
||||
user = UserSerializer(nested=True)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class DeviceRoleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:devicerole')
|
||||
config_template = ConfigTemplateSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
|
||||
# Related object counts
|
||||
@ -30,8 +28,6 @@ class DeviceRoleSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class InventoryItemRoleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:inventoryitemrole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:inventoryitemrole')
|
||||
|
||||
# Related object counts
|
||||
inventoryitem_count = RelatedObjectCountField('inventory_items')
|
||||
|
@ -19,8 +19,6 @@ __all__ = (
|
||||
|
||||
|
||||
class RegionSerializer(NestedGroupModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:region')
|
||||
parent = NestedRegionSerializer(required=False, allow_null=True, default=None)
|
||||
site_count = serializers.IntegerField(read_only=True, default=0)
|
||||
|
||||
@ -34,8 +32,6 @@ class RegionSerializer(NestedGroupModelSerializer):
|
||||
|
||||
|
||||
class SiteGroupSerializer(NestedGroupModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:sitegroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:sitegroup')
|
||||
parent = NestedSiteGroupSerializer(required=False, allow_null=True, default=None)
|
||||
site_count = serializers.IntegerField(read_only=True, default=0)
|
||||
|
||||
@ -49,8 +45,6 @@ class SiteGroupSerializer(NestedGroupModelSerializer):
|
||||
|
||||
|
||||
class SiteSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:site-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:site')
|
||||
status = ChoiceField(choices=SiteStatusChoices, required=False)
|
||||
region = RegionSerializer(nested=True, required=False, allow_null=True)
|
||||
group = SiteGroupSerializer(nested=True, required=False, allow_null=True)
|
||||
@ -84,8 +78,6 @@ class SiteSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class LocationSerializer(NestedGroupModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:location-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:location')
|
||||
site = SiteSerializer(nested=True)
|
||||
parent = NestedLocationSerializer(required=False, allow_null=True, default=None)
|
||||
status = ChoiceField(choices=LocationStatusChoices, required=False)
|
||||
|
@ -10,8 +10,6 @@ __all__ = (
|
||||
|
||||
|
||||
class VirtualChassisSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='dcim:virtualchassis')
|
||||
master = NestedDeviceSerializer(required=False, allow_null=True, default=None)
|
||||
members = NestedDeviceSerializer(many=True, read_only=True)
|
||||
|
||||
|
@ -22,8 +22,6 @@ __all__ = [
|
||||
|
||||
|
||||
class NestedEventRuleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:eventrule-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:eventrule')
|
||||
|
||||
class Meta:
|
||||
model = models.EventRule
|
||||
@ -31,8 +29,6 @@ class NestedEventRuleSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedWebhookSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:webhook')
|
||||
|
||||
class Meta:
|
||||
model = models.Webhook
|
||||
@ -40,8 +36,6 @@ class NestedWebhookSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedCustomFieldSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfield-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:customfield')
|
||||
|
||||
class Meta:
|
||||
model = models.CustomField
|
||||
@ -49,8 +43,6 @@ class NestedCustomFieldSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedCustomFieldChoiceSetSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfieldchoiceset-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:customfieldchoiceset')
|
||||
|
||||
class Meta:
|
||||
model = models.CustomFieldChoiceSet
|
||||
@ -58,8 +50,6 @@ class NestedCustomFieldChoiceSetSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedCustomLinkSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customlink-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:customlink')
|
||||
|
||||
class Meta:
|
||||
model = models.CustomLink
|
||||
@ -67,8 +57,6 @@ class NestedCustomLinkSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedConfigContextSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:configcontext-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:configcontext')
|
||||
|
||||
class Meta:
|
||||
model = models.ConfigContext
|
||||
@ -76,8 +64,6 @@ class NestedConfigContextSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedConfigTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:configtemplate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:configtemplate')
|
||||
|
||||
class Meta:
|
||||
model = models.ConfigTemplate
|
||||
@ -85,8 +71,6 @@ class NestedConfigTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedExportTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:exporttemplate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:exporttemplate')
|
||||
|
||||
class Meta:
|
||||
model = models.ExportTemplate
|
||||
@ -94,8 +78,6 @@ class NestedExportTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedSavedFilterSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:savedfilter-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:savedfilter')
|
||||
|
||||
class Meta:
|
||||
model = models.SavedFilter
|
||||
@ -103,7 +85,6 @@ class NestedSavedFilterSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedBookmarkSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:bookmark-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -112,7 +93,6 @@ class NestedBookmarkSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedImageAttachmentSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:imageattachment-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -121,8 +101,6 @@ class NestedImageAttachmentSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedJournalEntrySerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:journalentry-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:journalentry')
|
||||
|
||||
class Meta:
|
||||
model = models.JournalEntry
|
||||
|
@ -14,7 +14,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ImageAttachmentSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:imageattachment-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
object_type = ContentTypeField(
|
||||
queryset=ObjectType.objects.all()
|
||||
|
@ -14,7 +14,6 @@ __all__ = (
|
||||
|
||||
|
||||
class BookmarkSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:bookmark-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
object_type = ContentTypeField(
|
||||
queryset=ObjectType.objects.with_feature('bookmarks'),
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ObjectChangeSerializer(BaseModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:objectchange-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:objectchange')
|
||||
user = UserSerializer(
|
||||
nested=True,
|
||||
read_only=True
|
||||
|
@ -20,8 +20,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ConfigContextSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:configcontext-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:configcontext')
|
||||
regions = SerializedPKRelatedField(
|
||||
queryset=Region.objects.all(),
|
||||
serializer=RegionSerializer,
|
||||
|
@ -11,8 +11,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ConfigTemplateSerializer(TaggableModelSerializer, ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:configtemplate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:configtemplate')
|
||||
data_source = DataSourceSerializer(
|
||||
nested=True,
|
||||
required=False
|
||||
|
@ -16,8 +16,6 @@ __all__ = (
|
||||
|
||||
|
||||
class CustomFieldChoiceSetSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfieldchoiceset-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:customfieldchoiceset')
|
||||
base_choices = ChoiceField(
|
||||
choices=CustomFieldChoiceSetBaseChoices,
|
||||
required=False
|
||||
@ -39,8 +37,6 @@ class CustomFieldChoiceSetSerializer(ValidatedModelSerializer):
|
||||
|
||||
|
||||
class CustomFieldSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfield-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:customfield')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.with_feature('custom_fields'),
|
||||
many=True
|
||||
|
@ -11,8 +11,6 @@ __all__ = (
|
||||
|
||||
|
||||
class CustomLinkSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:customlink-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:customlink')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.with_feature('custom_links'),
|
||||
many=True
|
||||
|
@ -21,8 +21,6 @@ __all__ = (
|
||||
#
|
||||
|
||||
class EventRuleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:eventrule-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:eventrule')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.with_feature('event_rules'),
|
||||
many=True
|
||||
@ -59,8 +57,6 @@ class EventRuleSerializer(NetBoxModelSerializer):
|
||||
#
|
||||
|
||||
class WebhookSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:webhook')
|
||||
|
||||
class Meta:
|
||||
model = Webhook
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ExportTemplateSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:exporttemplate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:exporttemplate')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.with_feature('export_templates'),
|
||||
many=True
|
||||
|
@ -16,8 +16,6 @@ __all__ = (
|
||||
|
||||
|
||||
class JournalEntrySerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:journalentry-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:journalentry')
|
||||
assigned_object_type = ContentTypeField(
|
||||
queryset=ObjectType.objects.all()
|
||||
)
|
||||
|
@ -9,7 +9,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ObjectTypeSerializer(BaseModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:objecttype-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
|
@ -11,8 +11,6 @@ __all__ = (
|
||||
|
||||
|
||||
class SavedFilterSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:savedfilter-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:savedfilter')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.all(),
|
||||
many=True
|
||||
|
@ -14,8 +14,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ScriptSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:script-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:script')
|
||||
description = serializers.SerializerMethodField(read_only=True)
|
||||
vars = serializers.SerializerMethodField(read_only=True)
|
||||
result = JobSerializer(nested=True, read_only=True)
|
||||
|
@ -11,8 +11,6 @@ __all__ = (
|
||||
|
||||
|
||||
class TagSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:tag-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:tag')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.with_feature('tags'),
|
||||
many=True,
|
||||
|
@ -31,8 +31,6 @@ __all__ = [
|
||||
#
|
||||
|
||||
class NestedASNRangeSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asnrange-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:asnrange')
|
||||
|
||||
class Meta:
|
||||
model = models.ASNRange
|
||||
@ -44,8 +42,6 @@ class NestedASNRangeSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedASNSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:asn')
|
||||
|
||||
class Meta:
|
||||
model = models.ASN
|
||||
@ -60,8 +56,6 @@ class NestedASNSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('prefix_count',),
|
||||
)
|
||||
class NestedVRFSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:vrf')
|
||||
prefix_count = RelatedObjectCountField('prefixes')
|
||||
|
||||
class Meta:
|
||||
@ -74,8 +68,6 @@ class NestedVRFSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedRouteTargetSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:routetarget-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:routetarget')
|
||||
|
||||
class Meta:
|
||||
model = models.RouteTarget
|
||||
@ -90,8 +82,6 @@ class NestedRouteTargetSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('aggregate_count',),
|
||||
)
|
||||
class NestedRIRSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:rir')
|
||||
aggregate_count = RelatedObjectCountField('aggregates')
|
||||
|
||||
class Meta:
|
||||
@ -100,8 +90,6 @@ class NestedRIRSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedAggregateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:aggregate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:aggregate')
|
||||
family = serializers.IntegerField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -114,8 +102,6 @@ class NestedAggregateSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedFHRPGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:fhrpgroup')
|
||||
|
||||
class Meta:
|
||||
model = models.FHRPGroup
|
||||
@ -123,8 +109,6 @@ class NestedFHRPGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedFHRPGroupAssignmentSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:fhrpgroup')
|
||||
group = NestedFHRPGroupSerializer()
|
||||
|
||||
class Meta:
|
||||
@ -140,8 +124,6 @@ class NestedFHRPGroupAssignmentSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('prefix_count', 'vlan_count'),
|
||||
)
|
||||
class NestedRoleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:role')
|
||||
prefix_count = RelatedObjectCountField('prefixes')
|
||||
vlan_count = RelatedObjectCountField('vlans')
|
||||
|
||||
@ -154,8 +136,6 @@ class NestedRoleSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('vlan_count',),
|
||||
)
|
||||
class NestedVLANGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:vlangroup')
|
||||
vlan_count = RelatedObjectCountField('vlans')
|
||||
|
||||
class Meta:
|
||||
@ -164,8 +144,6 @@ class NestedVLANGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedVLANSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:vlan')
|
||||
|
||||
class Meta:
|
||||
model = models.VLAN
|
||||
@ -177,8 +155,6 @@ class NestedVLANSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedPrefixSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:prefix-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:prefix')
|
||||
family = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(read_only=True)
|
||||
|
||||
@ -192,8 +168,6 @@ class NestedPrefixSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedIPRangeSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:iprange-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:iprange')
|
||||
family = serializers.IntegerField(read_only=True)
|
||||
start_address = IPAddressField()
|
||||
end_address = IPAddressField()
|
||||
@ -208,8 +182,6 @@ class NestedIPRangeSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedIPAddressSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:ipaddress-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:ipaddress')
|
||||
family = serializers.IntegerField(read_only=True)
|
||||
address = IPAddressField()
|
||||
|
||||
@ -223,8 +195,6 @@ class NestedIPAddressSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedServiceTemplateSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:servicetemplate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:servicetemplate')
|
||||
|
||||
class Meta:
|
||||
model = models.ServiceTemplate
|
||||
@ -232,8 +202,6 @@ class NestedServiceTemplateSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedServiceSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:service-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:service')
|
||||
|
||||
class Meta:
|
||||
model = models.Service
|
||||
|
@ -14,8 +14,6 @@ __all__ = (
|
||||
|
||||
|
||||
class RIRSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:rir')
|
||||
|
||||
# Related object counts
|
||||
aggregate_count = RelatedObjectCountField('aggregates')
|
||||
@ -30,8 +28,6 @@ class RIRSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ASNRangeSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asnrange-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:asnrange')
|
||||
rir = RIRSerializer(nested=True)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
asn_count = serializers.IntegerField(read_only=True)
|
||||
@ -46,8 +42,6 @@ class ASNRangeSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ASNSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asn-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:asn')
|
||||
rir = RIRSerializer(nested=True, required=False, allow_null=True)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class FHRPGroupSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:fhrpgroup')
|
||||
ip_addresses = IPAddressSerializer(nested=True, many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -29,7 +27,6 @@ class FHRPGroupSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class FHRPGroupAssignmentSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:fhrpgroupassignment-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
group = FHRPGroupSerializer(nested=True)
|
||||
interface_type = ContentTypeField(
|
||||
|
@ -29,8 +29,6 @@ __all__ = (
|
||||
|
||||
|
||||
class AggregateSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:aggregate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:aggregate')
|
||||
family = ChoiceField(choices=IPAddressFamilyChoices, read_only=True)
|
||||
rir = RIRSerializer(nested=True)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
@ -46,8 +44,6 @@ class AggregateSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class PrefixSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:prefix-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:prefix')
|
||||
family = ChoiceField(choices=IPAddressFamilyChoices, read_only=True)
|
||||
site = SiteSerializer(nested=True, required=False, allow_null=True)
|
||||
vrf = VRFSerializer(nested=True, required=False, allow_null=True)
|
||||
@ -121,8 +117,6 @@ class AvailablePrefixSerializer(serializers.Serializer):
|
||||
#
|
||||
|
||||
class IPRangeSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:iprange-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:iprange')
|
||||
family = ChoiceField(choices=IPAddressFamilyChoices, read_only=True)
|
||||
start_address = IPAddressField()
|
||||
end_address = IPAddressField()
|
||||
@ -146,8 +140,6 @@ class IPRangeSerializer(NetBoxModelSerializer):
|
||||
#
|
||||
|
||||
class IPAddressSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:ipaddress-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:ipaddress')
|
||||
family = ChoiceField(choices=IPAddressFamilyChoices, read_only=True)
|
||||
address = IPAddressField()
|
||||
vrf = VRFSerializer(nested=True, required=False, allow_null=True)
|
||||
|
@ -10,8 +10,6 @@ __all__ = (
|
||||
|
||||
|
||||
class RoleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:role')
|
||||
|
||||
# Related object counts
|
||||
prefix_count = RelatedObjectCountField('prefixes')
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ServiceTemplateSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:servicetemplate-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:servicetemplate')
|
||||
protocol = ChoiceField(choices=ServiceProtocolChoices, required=False)
|
||||
|
||||
class Meta:
|
||||
@ -29,8 +27,6 @@ class ServiceTemplateSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ServiceSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:service-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:service')
|
||||
device = DeviceSerializer(nested=True, required=False, allow_null=True)
|
||||
virtual_machine = VirtualMachineSerializer(nested=True, required=False, allow_null=True)
|
||||
protocol = ChoiceField(choices=ServiceProtocolChoices, required=False)
|
||||
|
@ -22,8 +22,6 @@ __all__ = (
|
||||
|
||||
|
||||
class VLANGroupSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:vlangroup')
|
||||
scope_type = ContentTypeField(
|
||||
queryset=ContentType.objects.filter(
|
||||
model__in=VLANGROUP_SCOPE_TYPES
|
||||
@ -58,8 +56,6 @@ class VLANGroupSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class VLANSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:vlan')
|
||||
site = SiteSerializer(nested=True, required=False, allow_null=True)
|
||||
group = VLANGroupSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class RouteTargetSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:routetarget-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:routetarget')
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
|
||||
class Meta:
|
||||
@ -26,8 +24,6 @@ class RouteTargetSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class VRFSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='ipam:vrf')
|
||||
tenant = TenantSerializer(nested=True, required=False, allow_null=True)
|
||||
import_targets = SerializedPKRelatedField(
|
||||
queryset=RouteTarget.objects.all(),
|
||||
|
@ -13,7 +13,27 @@ __all__ = (
|
||||
)
|
||||
|
||||
|
||||
class NetBoxApiHyperlinkedIdentityField(serializers.HyperlinkedIdentityField):
|
||||
|
||||
def __init__(self, model, **kwargs):
|
||||
model_name = model._meta.model_name
|
||||
app_name = model._meta.app_label
|
||||
view_name = f'{app_name}-api:{model_name}-detail'
|
||||
super().__init__(view_name, **kwargs)
|
||||
|
||||
|
||||
class NetBoxUrlHyperlinkedIdentityField(serializers.HyperlinkedIdentityField):
|
||||
|
||||
def __init__(self, model, **kwargs):
|
||||
model_name = model._meta.model_name
|
||||
app_name = model._meta.app_label
|
||||
view_name = f'{app_name}:{model_name}'
|
||||
super().__init__(view_name, **kwargs)
|
||||
|
||||
|
||||
class BaseModelSerializer(serializers.ModelSerializer):
|
||||
url = serializers.RelatedField(read_only=True)
|
||||
display_url = serializers.RelatedField(read_only=True)
|
||||
display = serializers.SerializerMethodField(read_only=True)
|
||||
|
||||
def __init__(self, *args, nested=False, fields=None, **kwargs):
|
||||
@ -36,6 +56,17 @@ class BaseModelSerializer(serializers.ModelSerializer):
|
||||
if self.nested and not fields:
|
||||
self._requested_fields = getattr(self.Meta, 'brief_fields', None)
|
||||
|
||||
# don't override the field if the class already defines these so can set lookup_field
|
||||
if (
|
||||
"url" in self.fields and not isinstance(self.fields["url"], serializers.HyperlinkedIdentityField) and
|
||||
isinstance(self.fields["url"], serializers.RelatedField)):
|
||||
self.fields["url"] = NetBoxApiHyperlinkedIdentityField(self.Meta.model)
|
||||
if (
|
||||
"display_url" in self.fields and not
|
||||
isinstance(self.fields["display_url"], serializers.HyperlinkedIdentityField) and
|
||||
isinstance(self.fields["display_url"], serializers.RelatedField)):
|
||||
self.fields["display_url"] = NetBoxUrlHyperlinkedIdentityField(self.Meta.model)
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def to_internal_value(self, data):
|
||||
|
@ -23,8 +23,6 @@ class WritableNestedSerializer(BaseModelSerializer):
|
||||
|
||||
# Declared here for use by PrimaryModelSerializer, but should be imported from extras.api.nested_serializers
|
||||
class NestedTagSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='extras-api:tag-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='extras:tag')
|
||||
|
||||
class Meta:
|
||||
model = Tag
|
||||
|
@ -22,8 +22,6 @@ __all__ = [
|
||||
exclude_fields=('tenant_count',),
|
||||
)
|
||||
class NestedTenantGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:tenantgroup')
|
||||
tenant_count = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -33,8 +31,6 @@ class NestedTenantGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedTenantSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenant-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:tenant')
|
||||
|
||||
class Meta:
|
||||
model = Tenant
|
||||
@ -49,8 +45,6 @@ class NestedTenantSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('contact_count',),
|
||||
)
|
||||
class NestedContactGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:contactgroup')
|
||||
contact_count = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -60,8 +54,6 @@ class NestedContactGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedContactRoleSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactrole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:contactrole')
|
||||
|
||||
class Meta:
|
||||
model = ContactRole
|
||||
@ -69,8 +61,6 @@ class NestedContactRoleSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedContactSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contact-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:contact')
|
||||
|
||||
class Meta:
|
||||
model = Contact
|
||||
@ -78,7 +68,6 @@ class NestedContactSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedContactAssignmentSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
contact = NestedContactSerializer()
|
||||
role = NestedContactRoleSerializer
|
||||
|
@ -19,8 +19,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ContactGroupSerializer(NestedGroupModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:contactgroup')
|
||||
parent = NestedContactGroupSerializer(required=False, allow_null=True, default=None)
|
||||
contact_count = serializers.IntegerField(read_only=True, default=0)
|
||||
|
||||
@ -34,8 +32,6 @@ class ContactGroupSerializer(NestedGroupModelSerializer):
|
||||
|
||||
|
||||
class ContactRoleSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactrole-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:contactrole')
|
||||
|
||||
class Meta:
|
||||
model = ContactRole
|
||||
@ -47,8 +43,6 @@ class ContactRoleSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ContactSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contact-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:contact')
|
||||
group = ContactGroupSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
|
||||
class Meta:
|
||||
@ -61,7 +55,6 @@ class ContactSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ContactAssignmentSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail')
|
||||
display_url = serializers.CharField(allow_null=True, read_only=True)
|
||||
object_type = ContentTypeField(
|
||||
queryset=ContentType.objects.all()
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class TenantGroupSerializer(NestedGroupModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:tenantgroup')
|
||||
parent = NestedTenantGroupSerializer(required=False, allow_null=True)
|
||||
tenant_count = serializers.IntegerField(read_only=True, default=0)
|
||||
|
||||
@ -27,8 +25,6 @@ class TenantGroupSerializer(NestedGroupModelSerializer):
|
||||
|
||||
|
||||
class TenantSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenant-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='tenancy:tenant')
|
||||
group = TenantGroupSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
|
||||
# Related object counts
|
||||
|
@ -17,8 +17,6 @@ __all__ = [
|
||||
|
||||
|
||||
class NestedGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:group-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:group')
|
||||
|
||||
class Meta:
|
||||
model = Group
|
||||
@ -26,8 +24,6 @@ class NestedGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedUserSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:user-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:user')
|
||||
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
@ -41,8 +37,6 @@ class NestedUserSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedTokenSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:token-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:token')
|
||||
|
||||
class Meta:
|
||||
model = Token
|
||||
@ -50,8 +44,6 @@ class NestedTokenSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedObjectPermissionSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:objectpermission-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:objectpermission')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.all(),
|
||||
many=True
|
||||
|
@ -12,8 +12,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ObjectPermissionSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:objectpermission-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:objectpermission')
|
||||
object_types = ContentTypeField(
|
||||
queryset=ObjectType.objects.all(),
|
||||
many=True
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class TokenSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:token-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:token')
|
||||
key = serializers.CharField(
|
||||
min_length=40,
|
||||
max_length=40,
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class GroupSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:group-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:group')
|
||||
user_count = serializers.IntegerField(read_only=True)
|
||||
permissions = SerializedPKRelatedField(
|
||||
source='object_permissions',
|
||||
@ -34,8 +32,6 @@ class GroupSerializer(ValidatedModelSerializer):
|
||||
|
||||
|
||||
class UserSerializer(ValidatedModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:user-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='users:user')
|
||||
groups = SerializedPKRelatedField(
|
||||
queryset=Group.objects.all(),
|
||||
serializer=GroupSerializer,
|
||||
|
@ -23,8 +23,6 @@ __all__ = [
|
||||
exclude_fields=('cluster_count',),
|
||||
)
|
||||
class NestedClusterTypeSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:clustertype')
|
||||
cluster_count = RelatedObjectCountField('clusters')
|
||||
|
||||
class Meta:
|
||||
@ -36,8 +34,6 @@ class NestedClusterTypeSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('cluster_count',),
|
||||
)
|
||||
class NestedClusterGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:clustergroup')
|
||||
cluster_count = RelatedObjectCountField('clusters')
|
||||
|
||||
class Meta:
|
||||
@ -49,8 +45,6 @@ class NestedClusterGroupSerializer(WritableNestedSerializer):
|
||||
exclude_fields=('virtualmachine_count',),
|
||||
)
|
||||
class NestedClusterSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:cluster')
|
||||
virtualmachine_count = RelatedObjectCountField('virtual_machines')
|
||||
|
||||
class Meta:
|
||||
@ -63,8 +57,6 @@ class NestedClusterSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedVirtualMachineSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualmachine-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:virtualmachine')
|
||||
|
||||
class Meta:
|
||||
model = VirtualMachine
|
||||
@ -72,8 +64,6 @@ class NestedVirtualMachineSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedVMInterfaceSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:vminterface-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:vminterface')
|
||||
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
@ -82,8 +72,6 @@ class NestedVMInterfaceSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedVirtualDiskSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:virtualdisk')
|
||||
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class ClusterTypeSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:clustertype')
|
||||
|
||||
# Related object counts
|
||||
cluster_count = RelatedObjectCountField('clusters')
|
||||
@ -31,8 +29,6 @@ class ClusterTypeSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ClusterGroupSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:clustergroup')
|
||||
|
||||
# Related object counts
|
||||
cluster_count = RelatedObjectCountField('clusters')
|
||||
@ -47,8 +43,6 @@ class ClusterGroupSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class ClusterSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:cluster')
|
||||
type = ClusterTypeSerializer(nested=True)
|
||||
group = ClusterGroupSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
status = ChoiceField(choices=ClusterStatusChoices, required=False)
|
||||
|
@ -29,8 +29,6 @@ __all__ = (
|
||||
|
||||
|
||||
class VirtualMachineSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualmachine-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:virtualmachine')
|
||||
status = ChoiceField(choices=VirtualMachineStatusChoices, required=False)
|
||||
site = SiteSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
cluster = ClusterSerializer(nested=True, required=False, allow_null=True, default=None)
|
||||
@ -79,8 +77,6 @@ class VirtualMachineWithConfigContextSerializer(VirtualMachineSerializer):
|
||||
#
|
||||
|
||||
class VMInterfaceSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:vminterface-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:vminterface')
|
||||
virtual_machine = VirtualMachineSerializer(nested=True)
|
||||
parent = NestedVMInterfaceSerializer(required=False, allow_null=True)
|
||||
bridge = NestedVMInterfaceSerializer(required=False, allow_null=True)
|
||||
@ -131,8 +127,6 @@ class VMInterfaceSerializer(NetBoxModelSerializer):
|
||||
#
|
||||
|
||||
class VirtualDiskSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='virtualization:virtualdisk')
|
||||
virtual_machine = VirtualMachineSerializer(nested=True)
|
||||
|
||||
class Meta:
|
||||
|
@ -23,8 +23,6 @@ __all__ = (
|
||||
exclude_fields=('tunnel_count',),
|
||||
)
|
||||
class NestedTunnelGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='vpn-api:tunnelgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='vpn:tunnelgroup')
|
||||
tunnel_count = RelatedObjectCountField('tunnels')
|
||||
|
||||
class Meta:
|
||||
@ -33,12 +31,6 @@ class NestedTunnelGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedTunnelSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:tunnel-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:tunnel'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.Tunnel
|
||||
@ -46,12 +38,6 @@ class NestedTunnelSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedTunnelTerminationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:tunneltermination-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:tunneltermination'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.TunnelTermination
|
||||
@ -59,12 +45,6 @@ class NestedTunnelTerminationSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedIKEProposalSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ikeproposal-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ikeproposal'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.IKEProposal
|
||||
@ -72,12 +52,6 @@ class NestedIKEProposalSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedIKEPolicySerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ikepolicy-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ikepolicy'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.IKEPolicy
|
||||
@ -85,12 +59,6 @@ class NestedIKEPolicySerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedIPSecProposalSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ipsecproposal-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ipsecproposal'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.IPSecProposal
|
||||
@ -98,12 +66,6 @@ class NestedIPSecProposalSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedIPSecPolicySerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ipsecpolicy-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ipsecpolicy'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.IPSecPolicy
|
||||
@ -111,12 +73,6 @@ class NestedIPSecPolicySerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedIPSecProfileSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ipsecprofile-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ipsecprofile'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = models.IPSecProfile
|
||||
@ -128,8 +84,6 @@ class NestedIPSecProfileSerializer(WritableNestedSerializer):
|
||||
#
|
||||
|
||||
class NestedL2VPNSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpn-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='vpn:l2vpn')
|
||||
|
||||
class Meta:
|
||||
model = models.L2VPN
|
||||
@ -139,8 +93,6 @@ class NestedL2VPNSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedL2VPNTerminationSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpntermination-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='vpn:l2vpntermination')
|
||||
l2vpn = NestedL2VPNSerializer()
|
||||
|
||||
class Meta:
|
||||
|
@ -15,12 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class IKEProposalSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ikeproposal-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ikeproposal'
|
||||
)
|
||||
authentication_method = ChoiceField(
|
||||
choices=AuthenticationMethodChoices
|
||||
)
|
||||
@ -45,12 +39,6 @@ class IKEProposalSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class IKEPolicySerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ikepolicy-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ikepolicy'
|
||||
)
|
||||
version = ChoiceField(
|
||||
choices=IKEVersionChoices
|
||||
)
|
||||
@ -75,12 +63,6 @@ class IKEPolicySerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class IPSecProposalSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ipsecproposal-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ipsecproposal'
|
||||
)
|
||||
encryption_algorithm = ChoiceField(
|
||||
choices=EncryptionAlgorithmChoices
|
||||
)
|
||||
@ -98,12 +80,6 @@ class IPSecProposalSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class IPSecPolicySerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ipsecpolicy-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ipsecpolicy'
|
||||
)
|
||||
proposals = SerializedPKRelatedField(
|
||||
queryset=IPSecProposal.objects.all(),
|
||||
serializer=IPSecProposalSerializer,
|
||||
@ -126,12 +102,6 @@ class IPSecPolicySerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class IPSecProfileSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:ipsecprofile-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:ipsecprofile'
|
||||
)
|
||||
mode = ChoiceField(
|
||||
choices=IPSecModeChoices
|
||||
)
|
||||
|
@ -18,8 +18,6 @@ __all__ = (
|
||||
|
||||
|
||||
class L2VPNSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpn-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='vpn:l2vpn')
|
||||
type = ChoiceField(choices=L2VPNTypeChoices, required=False)
|
||||
import_targets = SerializedPKRelatedField(
|
||||
queryset=RouteTarget.objects.all(),
|
||||
@ -47,8 +45,6 @@ class L2VPNSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class L2VPNTerminationSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpntermination-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='vpn:l2vpntermination')
|
||||
l2vpn = L2VPNSerializer(
|
||||
nested=True
|
||||
)
|
||||
|
@ -23,8 +23,6 @@ __all__ = (
|
||||
#
|
||||
|
||||
class TunnelGroupSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='vpn-api:tunnelgroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='vpn:tunnelgroup')
|
||||
|
||||
# Related object counts
|
||||
tunnel_count = RelatedObjectCountField('tunnels')
|
||||
@ -39,12 +37,6 @@ class TunnelGroupSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class TunnelSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:tunnel-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:tunnel'
|
||||
)
|
||||
status = ChoiceField(
|
||||
choices=TunnelStatusChoices
|
||||
)
|
||||
@ -82,12 +74,6 @@ class TunnelSerializer(NetBoxModelSerializer):
|
||||
|
||||
|
||||
class TunnelTerminationSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn-api:tunneltermination-detail'
|
||||
)
|
||||
display_url = serializers.HyperlinkedIdentityField(
|
||||
view_name='vpn:tunneltermination'
|
||||
)
|
||||
tunnel = TunnelSerializer(
|
||||
nested=True
|
||||
)
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
exclude_fields=('wirelesslan_count',),
|
||||
)
|
||||
class NestedWirelessLANGroupSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslangroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='wireless:wirelesslangroup')
|
||||
wirelesslan_count = serializers.IntegerField(read_only=True)
|
||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||
|
||||
@ -26,8 +24,6 @@ class NestedWirelessLANGroupSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedWirelessLANSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='wireless:wirelesslan')
|
||||
|
||||
class Meta:
|
||||
model = WirelessLAN
|
||||
@ -35,8 +31,6 @@ class NestedWirelessLANSerializer(WritableNestedSerializer):
|
||||
|
||||
|
||||
class NestedWirelessLinkSerializer(WritableNestedSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslink-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='wireless:wirelesslink')
|
||||
|
||||
class Meta:
|
||||
model = WirelessLink
|
||||
|
@ -15,8 +15,6 @@ __all__ = (
|
||||
|
||||
|
||||
class WirelessLANGroupSerializer(NestedGroupModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslangroup-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='wireless:wirelesslangroup')
|
||||
parent = NestedWirelessLANGroupSerializer(required=False, allow_null=True, default=None)
|
||||
wirelesslan_count = serializers.IntegerField(read_only=True, default=0)
|
||||
|
||||
@ -30,8 +28,6 @@ class WirelessLANGroupSerializer(NestedGroupModelSerializer):
|
||||
|
||||
|
||||
class WirelessLANSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='wireless:wirelesslan')
|
||||
group = WirelessLANGroupSerializer(nested=True, required=False, allow_null=True)
|
||||
status = ChoiceField(choices=WirelessLANStatusChoices, required=False, allow_blank=True)
|
||||
vlan = VLANSerializer(nested=True, required=False, allow_null=True)
|
||||
|
@ -14,8 +14,6 @@ __all__ = (
|
||||
|
||||
|
||||
class WirelessLinkSerializer(NetBoxModelSerializer):
|
||||
url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslink-detail')
|
||||
display_url = serializers.HyperlinkedIdentityField(view_name='wireless:wirelesslink')
|
||||
status = ChoiceField(choices=LinkStatusChoices, required=False)
|
||||
interface_a = InterfaceSerializer(nested=True)
|
||||
interface_b = InterfaceSerializer(nested=True)
|
||||
|
Loading…
Reference in New Issue
Block a user