From 8b80b5e1cd896f8f68d06ffc9a92635c29352629 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 10 Jun 2024 15:24:52 -0700 Subject: [PATCH] 15156 add url display_url to base class --- docs/plugins/development/rest-api.md | 16 +--- netbox/circuits/api/nested_serializers.py | 12 --- netbox/circuits/api/serializers_/circuits.py | 8 -- netbox/circuits/api/serializers_/providers.py | 6 -- netbox/core/api/nested_serializers.py | 6 -- netbox/core/api/serializers_/data.py | 12 --- netbox/core/api/serializers_/jobs.py | 2 - netbox/dcim/api/nested_serializers.py | 84 ------------------- netbox/dcim/api/serializers_/cables.py | 3 - .../api/serializers_/device_components.py | 22 ----- netbox/dcim/api/serializers_/devices.py | 6 -- netbox/dcim/api/serializers_/devicetypes.py | 4 - netbox/dcim/api/serializers_/manufacturers.py | 2 - netbox/dcim/api/serializers_/platforms.py | 2 - netbox/dcim/api/serializers_/power.py | 4 - netbox/dcim/api/serializers_/racks.py | 6 -- netbox/dcim/api/serializers_/roles.py | 4 - netbox/dcim/api/serializers_/sites.py | 8 -- .../dcim/api/serializers_/virtualchassis.py | 2 - netbox/extras/api/nested_serializers.py | 22 ----- netbox/extras/api/serializers_/attachments.py | 1 - netbox/extras/api/serializers_/bookmarks.py | 1 - .../extras/api/serializers_/change_logging.py | 2 - .../extras/api/serializers_/configcontexts.py | 2 - .../api/serializers_/configtemplates.py | 2 - .../extras/api/serializers_/customfields.py | 4 - netbox/extras/api/serializers_/customlinks.py | 2 - netbox/extras/api/serializers_/events.py | 4 - .../api/serializers_/exporttemplates.py | 2 - netbox/extras/api/serializers_/journaling.py | 2 - netbox/extras/api/serializers_/objecttypes.py | 1 - .../extras/api/serializers_/savedfilters.py | 2 - netbox/extras/api/serializers_/scripts.py | 2 - netbox/extras/api/serializers_/tags.py | 2 - netbox/ipam/api/nested_serializers.py | 32 ------- netbox/ipam/api/serializers_/asns.py | 6 -- netbox/ipam/api/serializers_/fhrpgroups.py | 3 - netbox/ipam/api/serializers_/ip.py | 8 -- netbox/ipam/api/serializers_/roles.py | 2 - netbox/ipam/api/serializers_/services.py | 4 - netbox/ipam/api/serializers_/vlans.py | 4 - netbox/ipam/api/serializers_/vrfs.py | 4 - netbox/netbox/api/serializers/base.py | 31 +++++++ netbox/netbox/api/serializers/nested.py | 2 - netbox/tenancy/api/nested_serializers.py | 11 --- netbox/tenancy/api/serializers_/contacts.py | 7 -- netbox/tenancy/api/serializers_/tenants.py | 4 - netbox/users/api/nested_serializers.py | 8 -- netbox/users/api/serializers_/permissions.py | 2 - netbox/users/api/serializers_/tokens.py | 2 - netbox/users/api/serializers_/users.py | 4 - .../virtualization/api/nested_serializers.py | 12 --- .../api/serializers_/clusters.py | 6 -- .../api/serializers_/virtualmachines.py | 6 -- netbox/vpn/api/nested_serializers.py | 48 ----------- netbox/vpn/api/serializers_/crypto.py | 30 ------- netbox/vpn/api/serializers_/l2vpn.py | 4 - netbox/vpn/api/serializers_/tunnels.py | 14 ---- netbox/wireless/api/nested_serializers.py | 6 -- .../wireless/api/serializers_/wirelesslans.py | 4 - .../api/serializers_/wirelesslinks.py | 2 - 61 files changed, 34 insertions(+), 492 deletions(-) diff --git a/docs/plugins/development/rest-api.md b/docs/plugins/development/rest-api.md index d109ff3c5..62dd2c882 100644 --- a/docs/plugins/development/rest-api.md +++ b/docs/plugins/development/rest-api.md @@ -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 diff --git a/netbox/circuits/api/nested_serializers.py b/netbox/circuits/api/nested_serializers.py index eda79d9a3..4201b3761 100644 --- a/netbox/circuits/api/nested_serializers.py +++ b/netbox/circuits/api/nested_serializers.py @@ -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: diff --git a/netbox/circuits/api/serializers_/circuits.py b/netbox/circuits/api/serializers_/circuits.py index 220425ecd..7010bb2c6 100644 --- a/netbox/circuits/api/serializers_/circuits.py +++ b/netbox/circuits/api/serializers_/circuits.py @@ -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) diff --git a/netbox/circuits/api/serializers_/providers.py b/netbox/circuits/api/serializers_/providers.py index 02c74ecf3..b0e27754b 100644 --- a/netbox/circuits/api/serializers_/providers.py +++ b/netbox/circuits/api/serializers_/providers.py @@ -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: diff --git a/netbox/core/api/nested_serializers.py b/netbox/core/api/nested_serializers.py index b5f249435..8e5d3ff63 100644 --- a/netbox/core/api/nested_serializers.py +++ b/netbox/core/api/nested_serializers.py @@ -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, diff --git a/netbox/core/api/serializers_/data.py b/netbox/core/api/serializers_/data.py index faf22c79a..eddd45c58 100644 --- a/netbox/core/api/serializers_/data.py +++ b/netbox/core/api/serializers_/data.py @@ -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 diff --git a/netbox/core/api/serializers_/jobs.py b/netbox/core/api/serializers_/jobs.py index 8635e74df..e5e07aa41 100644 --- a/netbox/core/api/serializers_/jobs.py +++ b/netbox/core/api/serializers_/jobs.py @@ -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 diff --git a/netbox/dcim/api/nested_serializers.py b/netbox/dcim/api/nested_serializers.py index 8f4d97d34..6aff1bdc9 100644 --- a/netbox/dcim/api/nested_serializers.py +++ b/netbox/dcim/api/nested_serializers.py @@ -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: diff --git a/netbox/dcim/api/serializers_/cables.py b/netbox/dcim/api/serializers_/cables.py index 1881df41a..e64efafd7 100644 --- a/netbox/dcim/api/serializers_/cables.py +++ b/netbox/dcim/api/serializers_/cables.py @@ -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) diff --git a/netbox/dcim/api/serializers_/device_components.py b/netbox/dcim/api/serializers_/device_components.py index 0a842960b..ab3944723 100644 --- a/netbox/dcim/api/serializers_/device_components.py +++ b/netbox/dcim/api/serializers_/device_components.py @@ -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) diff --git a/netbox/dcim/api/serializers_/devices.py b/netbox/dcim/api/serializers_/devices.py index 730b4e60c..f4e72f082 100644 --- a/netbox/dcim/api/serializers_/devices.py +++ b/netbox/dcim/api/serializers_/devices.py @@ -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) diff --git a/netbox/dcim/api/serializers_/devicetypes.py b/netbox/dcim/api/serializers_/devicetypes.py index cfe5a19fd..a755247db 100644 --- a/netbox/dcim/api/serializers_/devicetypes.py +++ b/netbox/dcim/api/serializers_/devicetypes.py @@ -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) diff --git a/netbox/dcim/api/serializers_/manufacturers.py b/netbox/dcim/api/serializers_/manufacturers.py index 671222f27..61158e0f7 100644 --- a/netbox/dcim/api/serializers_/manufacturers.py +++ b/netbox/dcim/api/serializers_/manufacturers.py @@ -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') diff --git a/netbox/dcim/api/serializers_/platforms.py b/netbox/dcim/api/serializers_/platforms.py index e61520b63..3c846f8fd 100644 --- a/netbox/dcim/api/serializers_/platforms.py +++ b/netbox/dcim/api/serializers_/platforms.py @@ -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) diff --git a/netbox/dcim/api/serializers_/power.py b/netbox/dcim/api/serializers_/power.py index 601d52348..fc65a0732 100644 --- a/netbox/dcim/api/serializers_/power.py +++ b/netbox/dcim/api/serializers_/power.py @@ -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, diff --git a/netbox/dcim/api/serializers_/racks.py b/netbox/dcim/api/serializers_/racks.py index 6c741918c..d8d738001 100644 --- a/netbox/dcim/api/serializers_/racks.py +++ b/netbox/dcim/api/serializers_/racks.py @@ -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) diff --git a/netbox/dcim/api/serializers_/roles.py b/netbox/dcim/api/serializers_/roles.py index aec7f3346..e9c9d3563 100644 --- a/netbox/dcim/api/serializers_/roles.py +++ b/netbox/dcim/api/serializers_/roles.py @@ -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') diff --git a/netbox/dcim/api/serializers_/sites.py b/netbox/dcim/api/serializers_/sites.py index 4cc255cd4..f45a1949d 100644 --- a/netbox/dcim/api/serializers_/sites.py +++ b/netbox/dcim/api/serializers_/sites.py @@ -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) diff --git a/netbox/dcim/api/serializers_/virtualchassis.py b/netbox/dcim/api/serializers_/virtualchassis.py index 67e3b0f12..19e94ba8d 100644 --- a/netbox/dcim/api/serializers_/virtualchassis.py +++ b/netbox/dcim/api/serializers_/virtualchassis.py @@ -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) diff --git a/netbox/extras/api/nested_serializers.py b/netbox/extras/api/nested_serializers.py index 9368e5899..5b8394aaa 100644 --- a/netbox/extras/api/nested_serializers.py +++ b/netbox/extras/api/nested_serializers.py @@ -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 diff --git a/netbox/extras/api/serializers_/attachments.py b/netbox/extras/api/serializers_/attachments.py index d69555536..e5b239849 100644 --- a/netbox/extras/api/serializers_/attachments.py +++ b/netbox/extras/api/serializers_/attachments.py @@ -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() diff --git a/netbox/extras/api/serializers_/bookmarks.py b/netbox/extras/api/serializers_/bookmarks.py index ea9cb4e69..f881658c7 100644 --- a/netbox/extras/api/serializers_/bookmarks.py +++ b/netbox/extras/api/serializers_/bookmarks.py @@ -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'), diff --git a/netbox/extras/api/serializers_/change_logging.py b/netbox/extras/api/serializers_/change_logging.py index dc02e4a5a..5dc7a73d3 100644 --- a/netbox/extras/api/serializers_/change_logging.py +++ b/netbox/extras/api/serializers_/change_logging.py @@ -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 diff --git a/netbox/extras/api/serializers_/configcontexts.py b/netbox/extras/api/serializers_/configcontexts.py index e18a8b605..42a11ffcd 100644 --- a/netbox/extras/api/serializers_/configcontexts.py +++ b/netbox/extras/api/serializers_/configcontexts.py @@ -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, diff --git a/netbox/extras/api/serializers_/configtemplates.py b/netbox/extras/api/serializers_/configtemplates.py index c6c277852..30d2fb468 100644 --- a/netbox/extras/api/serializers_/configtemplates.py +++ b/netbox/extras/api/serializers_/configtemplates.py @@ -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 diff --git a/netbox/extras/api/serializers_/customfields.py b/netbox/extras/api/serializers_/customfields.py index d2f0af175..65f866a68 100644 --- a/netbox/extras/api/serializers_/customfields.py +++ b/netbox/extras/api/serializers_/customfields.py @@ -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 diff --git a/netbox/extras/api/serializers_/customlinks.py b/netbox/extras/api/serializers_/customlinks.py index f1728dc4c..6391e0471 100644 --- a/netbox/extras/api/serializers_/customlinks.py +++ b/netbox/extras/api/serializers_/customlinks.py @@ -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 diff --git a/netbox/extras/api/serializers_/events.py b/netbox/extras/api/serializers_/events.py index e15b02afa..6af30e707 100644 --- a/netbox/extras/api/serializers_/events.py +++ b/netbox/extras/api/serializers_/events.py @@ -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 diff --git a/netbox/extras/api/serializers_/exporttemplates.py b/netbox/extras/api/serializers_/exporttemplates.py index a9d1db10b..faef9bb9e 100644 --- a/netbox/extras/api/serializers_/exporttemplates.py +++ b/netbox/extras/api/serializers_/exporttemplates.py @@ -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 diff --git a/netbox/extras/api/serializers_/journaling.py b/netbox/extras/api/serializers_/journaling.py index 721b918fa..4afd3e70a 100644 --- a/netbox/extras/api/serializers_/journaling.py +++ b/netbox/extras/api/serializers_/journaling.py @@ -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() ) diff --git a/netbox/extras/api/serializers_/objecttypes.py b/netbox/extras/api/serializers_/objecttypes.py index 9f0b38819..c1980c106 100644 --- a/netbox/extras/api/serializers_/objecttypes.py +++ b/netbox/extras/api/serializers_/objecttypes.py @@ -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: diff --git a/netbox/extras/api/serializers_/savedfilters.py b/netbox/extras/api/serializers_/savedfilters.py index 8222ab275..140303797 100644 --- a/netbox/extras/api/serializers_/savedfilters.py +++ b/netbox/extras/api/serializers_/savedfilters.py @@ -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 diff --git a/netbox/extras/api/serializers_/scripts.py b/netbox/extras/api/serializers_/scripts.py index 77dddc45f..f35b1ea0f 100644 --- a/netbox/extras/api/serializers_/scripts.py +++ b/netbox/extras/api/serializers_/scripts.py @@ -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) diff --git a/netbox/extras/api/serializers_/tags.py b/netbox/extras/api/serializers_/tags.py index f84decec5..946ed3c8a 100644 --- a/netbox/extras/api/serializers_/tags.py +++ b/netbox/extras/api/serializers_/tags.py @@ -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, diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index 00f5f1d32..95b5ab11d 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -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 diff --git a/netbox/ipam/api/serializers_/asns.py b/netbox/ipam/api/serializers_/asns.py index 13ca47f8c..8baa073f5 100644 --- a/netbox/ipam/api/serializers_/asns.py +++ b/netbox/ipam/api/serializers_/asns.py @@ -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) diff --git a/netbox/ipam/api/serializers_/fhrpgroups.py b/netbox/ipam/api/serializers_/fhrpgroups.py index 4990acf2b..c11367da5 100644 --- a/netbox/ipam/api/serializers_/fhrpgroups.py +++ b/netbox/ipam/api/serializers_/fhrpgroups.py @@ -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( diff --git a/netbox/ipam/api/serializers_/ip.py b/netbox/ipam/api/serializers_/ip.py index c65798474..73fd09064 100644 --- a/netbox/ipam/api/serializers_/ip.py +++ b/netbox/ipam/api/serializers_/ip.py @@ -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) diff --git a/netbox/ipam/api/serializers_/roles.py b/netbox/ipam/api/serializers_/roles.py index e3c79c19a..9a97a8570 100644 --- a/netbox/ipam/api/serializers_/roles.py +++ b/netbox/ipam/api/serializers_/roles.py @@ -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') diff --git a/netbox/ipam/api/serializers_/services.py b/netbox/ipam/api/serializers_/services.py index b08d17121..e0b2014f6 100644 --- a/netbox/ipam/api/serializers_/services.py +++ b/netbox/ipam/api/serializers_/services.py @@ -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) diff --git a/netbox/ipam/api/serializers_/vlans.py b/netbox/ipam/api/serializers_/vlans.py index bb243365b..5525545a8 100644 --- a/netbox/ipam/api/serializers_/vlans.py +++ b/netbox/ipam/api/serializers_/vlans.py @@ -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) diff --git a/netbox/ipam/api/serializers_/vrfs.py b/netbox/ipam/api/serializers_/vrfs.py index a316b404b..ad54dc095 100644 --- a/netbox/ipam/api/serializers_/vrfs.py +++ b/netbox/ipam/api/serializers_/vrfs.py @@ -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(), diff --git a/netbox/netbox/api/serializers/base.py b/netbox/netbox/api/serializers/base.py index 58ef45219..c6ddc20e3 100644 --- a/netbox/netbox/api/serializers/base.py +++ b/netbox/netbox/api/serializers/base.py @@ -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): diff --git a/netbox/netbox/api/serializers/nested.py b/netbox/netbox/api/serializers/nested.py index a9a434d66..af4ae35cb 100644 --- a/netbox/netbox/api/serializers/nested.py +++ b/netbox/netbox/api/serializers/nested.py @@ -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 diff --git a/netbox/tenancy/api/nested_serializers.py b/netbox/tenancy/api/nested_serializers.py index ef7a1b03a..7c2403a3f 100644 --- a/netbox/tenancy/api/nested_serializers.py +++ b/netbox/tenancy/api/nested_serializers.py @@ -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 diff --git a/netbox/tenancy/api/serializers_/contacts.py b/netbox/tenancy/api/serializers_/contacts.py index 134638980..8009cb63f 100644 --- a/netbox/tenancy/api/serializers_/contacts.py +++ b/netbox/tenancy/api/serializers_/contacts.py @@ -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() diff --git a/netbox/tenancy/api/serializers_/tenants.py b/netbox/tenancy/api/serializers_/tenants.py index eb31b47a8..2ccac0d59 100644 --- a/netbox/tenancy/api/serializers_/tenants.py +++ b/netbox/tenancy/api/serializers_/tenants.py @@ -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 diff --git a/netbox/users/api/nested_serializers.py b/netbox/users/api/nested_serializers.py index 103984634..1d14a4169 100644 --- a/netbox/users/api/nested_serializers.py +++ b/netbox/users/api/nested_serializers.py @@ -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 diff --git a/netbox/users/api/serializers_/permissions.py b/netbox/users/api/serializers_/permissions.py index f9974e7de..b6f9de74c 100644 --- a/netbox/users/api/serializers_/permissions.py +++ b/netbox/users/api/serializers_/permissions.py @@ -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 diff --git a/netbox/users/api/serializers_/tokens.py b/netbox/users/api/serializers_/tokens.py index 6c777ccbc..377573aba 100644 --- a/netbox/users/api/serializers_/tokens.py +++ b/netbox/users/api/serializers_/tokens.py @@ -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, diff --git a/netbox/users/api/serializers_/users.py b/netbox/users/api/serializers_/users.py index aeeefe9d3..18f1291d1 100644 --- a/netbox/users/api/serializers_/users.py +++ b/netbox/users/api/serializers_/users.py @@ -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, diff --git a/netbox/virtualization/api/nested_serializers.py b/netbox/virtualization/api/nested_serializers.py index c7b5986ad..4c070c85c 100644 --- a/netbox/virtualization/api/nested_serializers.py +++ b/netbox/virtualization/api/nested_serializers.py @@ -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: diff --git a/netbox/virtualization/api/serializers_/clusters.py b/netbox/virtualization/api/serializers_/clusters.py index 3ee50bfad..b16487132 100644 --- a/netbox/virtualization/api/serializers_/clusters.py +++ b/netbox/virtualization/api/serializers_/clusters.py @@ -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) diff --git a/netbox/virtualization/api/serializers_/virtualmachines.py b/netbox/virtualization/api/serializers_/virtualmachines.py index 9cd78b9d9..e6b57fc87 100644 --- a/netbox/virtualization/api/serializers_/virtualmachines.py +++ b/netbox/virtualization/api/serializers_/virtualmachines.py @@ -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: diff --git a/netbox/vpn/api/nested_serializers.py b/netbox/vpn/api/nested_serializers.py index cc911878d..2c7e3eb03 100644 --- a/netbox/vpn/api/nested_serializers.py +++ b/netbox/vpn/api/nested_serializers.py @@ -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: diff --git a/netbox/vpn/api/serializers_/crypto.py b/netbox/vpn/api/serializers_/crypto.py index 52e453b26..27a39055f 100644 --- a/netbox/vpn/api/serializers_/crypto.py +++ b/netbox/vpn/api/serializers_/crypto.py @@ -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 ) diff --git a/netbox/vpn/api/serializers_/l2vpn.py b/netbox/vpn/api/serializers_/l2vpn.py index 96539b8aa..c16cbbe1d 100644 --- a/netbox/vpn/api/serializers_/l2vpn.py +++ b/netbox/vpn/api/serializers_/l2vpn.py @@ -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 ) diff --git a/netbox/vpn/api/serializers_/tunnels.py b/netbox/vpn/api/serializers_/tunnels.py index d463f49dd..a89766d3f 100644 --- a/netbox/vpn/api/serializers_/tunnels.py +++ b/netbox/vpn/api/serializers_/tunnels.py @@ -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 ) diff --git a/netbox/wireless/api/nested_serializers.py b/netbox/wireless/api/nested_serializers.py index e0731e6c9..8196b9828 100644 --- a/netbox/wireless/api/nested_serializers.py +++ b/netbox/wireless/api/nested_serializers.py @@ -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 diff --git a/netbox/wireless/api/serializers_/wirelesslans.py b/netbox/wireless/api/serializers_/wirelesslans.py index 08f4f90d9..9f6b9c009 100644 --- a/netbox/wireless/api/serializers_/wirelesslans.py +++ b/netbox/wireless/api/serializers_/wirelesslans.py @@ -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) diff --git a/netbox/wireless/api/serializers_/wirelesslinks.py b/netbox/wireless/api/serializers_/wirelesslinks.py index 880ce9f62..2b1075cbe 100644 --- a/netbox/wireless/api/serializers_/wirelesslinks.py +++ b/netbox/wireless/api/serializers_/wirelesslinks.py @@ -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)