mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-28 19:36:26 -06:00
Closes #17143: Deprecate the use of dedicated nested API serializers
This commit is contained in:
parent
b3dfe8622d
commit
0f37da1523
@ -1,9 +1,11 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema_serializer
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from circuits.models import *
|
from circuits.models import *
|
||||||
from netbox.api.fields import RelatedObjectCountField
|
from netbox.api.fields import RelatedObjectCountField
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from .serializers_.nested import NestedProviderAccountSerializer
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'NestedCircuitSerializer',
|
'NestedCircuitSerializer',
|
||||||
@ -14,6 +16,12 @@ __all__ = [
|
|||||||
'NestedProviderAccountSerializer',
|
'NestedProviderAccountSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Provider networks
|
# Provider networks
|
||||||
@ -41,17 +49,6 @@ class NestedProviderSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'circuit_count']
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'circuit_count']
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Provider Accounts
|
|
||||||
#
|
|
||||||
|
|
||||||
class NestedProviderAccountSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = ProviderAccount
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'account']
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Circuits
|
# Circuits
|
||||||
#
|
#
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
from .serializers_.providers import *
|
from .serializers_.providers import *
|
||||||
from .serializers_.circuits import *
|
from .serializers_.circuits import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
13
netbox/circuits/api/serializers_/nested.py
Normal file
13
netbox/circuits/api/serializers_/nested.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
from circuits.models import ProviderAccount
|
||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedProviderAccountSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NestedProviderAccountSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ProviderAccount
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'account']
|
@ -5,7 +5,7 @@ from ipam.api.serializers_.asns import ASNSerializer
|
|||||||
from ipam.models import ASN
|
from ipam.models import ASN
|
||||||
from netbox.api.fields import RelatedObjectCountField, SerializedPKRelatedField
|
from netbox.api.fields import RelatedObjectCountField, SerializedPKRelatedField
|
||||||
from netbox.api.serializers import NetBoxModelSerializer
|
from netbox.api.serializers import NetBoxModelSerializer
|
||||||
from ..nested_serializers import *
|
from .nested import NestedProviderAccountSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ProviderAccountSerializer',
|
'ProviderAccountSerializer',
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from core.choices import JobStatusChoices
|
from core.choices import JobStatusChoices
|
||||||
@ -12,6 +14,12 @@ __all__ = (
|
|||||||
'NestedJobSerializer',
|
'NestedJobSerializer',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NestedDataSourceSerializer(WritableNestedSerializer):
|
class NestedDataSourceSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from .serializers_.change_logging import *
|
from .serializers_.change_logging import *
|
||||||
from .serializers_.data import *
|
from .serializers_.data import *
|
||||||
from .serializers_.jobs import *
|
from .serializers_.jobs import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema_serializer
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from dcim import models
|
from dcim import models
|
||||||
from netbox.api.fields import RelatedObjectCountField
|
from netbox.api.fields import RelatedObjectCountField
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from .serializers_.nested import (
|
||||||
|
NestedDeviceBaySerializer, NestedDeviceSerializer, NestedInterfaceSerializer, NestedInterfaceTemplateSerializer,
|
||||||
|
NestedLocationSerializer, NestedModuleBaySerializer, NestedRegionSerializer, NestedSiteGroupSerializer,
|
||||||
|
)
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'NestedCableSerializer',
|
'NestedCableSerializer',
|
||||||
@ -48,35 +54,17 @@ __all__ = [
|
|||||||
'NestedVirtualDeviceContextSerializer',
|
'NestedVirtualDeviceContextSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Regions/sites
|
# Regions/sites
|
||||||
#
|
#
|
||||||
|
|
||||||
@extend_schema_serializer(
|
|
||||||
exclude_fields=('site_count',),
|
|
||||||
)
|
|
||||||
class NestedRegionSerializer(WritableNestedSerializer):
|
|
||||||
site_count = serializers.IntegerField(read_only=True)
|
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.Region
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth']
|
|
||||||
|
|
||||||
|
|
||||||
@extend_schema_serializer(
|
|
||||||
exclude_fields=('site_count',),
|
|
||||||
)
|
|
||||||
class NestedSiteGroupSerializer(WritableNestedSerializer):
|
|
||||||
site_count = serializers.IntegerField(read_only=True)
|
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.SiteGroup
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedSiteSerializer(WritableNestedSerializer):
|
class NestedSiteSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -88,18 +76,6 @@ class NestedSiteSerializer(WritableNestedSerializer):
|
|||||||
# Racks
|
# Racks
|
||||||
#
|
#
|
||||||
|
|
||||||
@extend_schema_serializer(
|
|
||||||
exclude_fields=('rack_count',),
|
|
||||||
)
|
|
||||||
class NestedLocationSerializer(WritableNestedSerializer):
|
|
||||||
rack_count = serializers.IntegerField(read_only=True)
|
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.Location
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'rack_count', '_depth']
|
|
||||||
|
|
||||||
|
|
||||||
@extend_schema_serializer(
|
@extend_schema_serializer(
|
||||||
exclude_fields=('rack_count',),
|
exclude_fields=('rack_count',),
|
||||||
)
|
)
|
||||||
@ -200,13 +176,6 @@ class NestedPowerOutletTemplateSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'name']
|
fields = ['id', 'url', 'display_url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
class NestedInterfaceTemplateSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.InterfaceTemplate
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedRearPortTemplateSerializer(WritableNestedSerializer):
|
class NestedRearPortTemplateSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -271,13 +240,6 @@ class NestedPlatformSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'device_count', 'virtualmachine_count']
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'device_count', 'virtualmachine_count']
|
||||||
|
|
||||||
|
|
||||||
class NestedDeviceSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.Device
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class ModuleNestedModuleBaySerializer(WritableNestedSerializer):
|
class ModuleNestedModuleBaySerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -285,13 +247,6 @@ class ModuleNestedModuleBaySerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'name']
|
fields = ['id', 'url', 'display_url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
class ModuleBayNestedModuleSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.Module
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'serial']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedModuleSerializer(WritableNestedSerializer):
|
class NestedModuleSerializer(WritableNestedSerializer):
|
||||||
device = NestedDeviceSerializer(read_only=True)
|
device = NestedDeviceSerializer(read_only=True)
|
||||||
module_bay = ModuleNestedModuleBaySerializer(read_only=True)
|
module_bay = ModuleNestedModuleBaySerializer(read_only=True)
|
||||||
@ -338,15 +293,6 @@ class NestedPowerPortSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
|
fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
|
||||||
|
|
||||||
|
|
||||||
class NestedInterfaceSerializer(WritableNestedSerializer):
|
|
||||||
device = NestedDeviceSerializer(read_only=True)
|
|
||||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.Interface
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedRearPortSerializer(WritableNestedSerializer):
|
class NestedRearPortSerializer(WritableNestedSerializer):
|
||||||
device = NestedDeviceSerializer(read_only=True)
|
device = NestedDeviceSerializer(read_only=True)
|
||||||
_occupied = serializers.BooleanField(required=False, read_only=True)
|
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||||
@ -365,22 +311,6 @@ class NestedFrontPortSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
|
fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
|
||||||
|
|
||||||
|
|
||||||
class NestedModuleBaySerializer(WritableNestedSerializer):
|
|
||||||
installed_module = ModuleBayNestedModuleSerializer(required=False, allow_null=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.ModuleBay
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'installed_module', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedDeviceBaySerializer(WritableNestedSerializer):
|
|
||||||
device = NestedDeviceSerializer(read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.DeviceBay
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'device', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedInventoryItemSerializer(WritableNestedSerializer):
|
class NestedInventoryItemSerializer(WritableNestedSerializer):
|
||||||
device = NestedDeviceSerializer(read_only=True)
|
device = NestedDeviceSerializer(read_only=True)
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
@ -11,4 +11,3 @@ from .serializers_.devices import *
|
|||||||
from .serializers_.device_components import *
|
from .serializers_.device_components import *
|
||||||
from .serializers_.power import *
|
from .serializers_.power import *
|
||||||
from .serializers_.rackunits import *
|
from .serializers_.rackunits import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
@ -15,7 +15,7 @@ from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelated
|
|||||||
from netbox.api.serializers import NetBoxModelSerializer, WritableNestedSerializer
|
from netbox.api.serializers import NetBoxModelSerializer, WritableNestedSerializer
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
from vpn.api.serializers_.l2vpn import L2VPNTerminationSerializer
|
from vpn.api.serializers_.l2vpn import L2VPNTerminationSerializer
|
||||||
from wireless.api.nested_serializers import NestedWirelessLinkSerializer
|
from wireless.api.serializers_.nested import NestedWirelessLinkSerializer
|
||||||
from wireless.api.serializers_.wirelesslans import WirelessLANSerializer
|
from wireless.api.serializers_.wirelesslans import WirelessLANSerializer
|
||||||
from wireless.choices import *
|
from wireless.choices import *
|
||||||
from wireless.models import WirelessLAN
|
from wireless.models import WirelessLAN
|
||||||
@ -23,8 +23,8 @@ from .base import ConnectedEndpointsSerializer
|
|||||||
from .cables import CabledObjectSerializer
|
from .cables import CabledObjectSerializer
|
||||||
from .devices import DeviceSerializer, ModuleSerializer, VirtualDeviceContextSerializer
|
from .devices import DeviceSerializer, ModuleSerializer, VirtualDeviceContextSerializer
|
||||||
from .manufacturers import ManufacturerSerializer
|
from .manufacturers import ManufacturerSerializer
|
||||||
|
from .nested import NestedInterfaceSerializer
|
||||||
from .roles import InventoryItemRoleSerializer
|
from .roles import InventoryItemRoleSerializer
|
||||||
from ..nested_serializers import *
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ConsolePortSerializer',
|
'ConsolePortSerializer',
|
||||||
|
@ -16,9 +16,9 @@ from .devicetypes import *
|
|||||||
from .platforms import PlatformSerializer
|
from .platforms import PlatformSerializer
|
||||||
from .racks import RackSerializer
|
from .racks import RackSerializer
|
||||||
from .roles import DeviceRoleSerializer
|
from .roles import DeviceRoleSerializer
|
||||||
|
from .nested import NestedDeviceBaySerializer, NestedDeviceSerializer, NestedModuleBaySerializer
|
||||||
from .sites import LocationSerializer, SiteSerializer
|
from .sites import LocationSerializer, SiteSerializer
|
||||||
from .virtualchassis import VirtualChassisSerializer
|
from .virtualchassis import VirtualChassisSerializer
|
||||||
from ..nested_serializers import *
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'DeviceSerializer',
|
'DeviceSerializer',
|
||||||
|
@ -14,8 +14,8 @@ from utilities.api import get_serializer_for_model
|
|||||||
from wireless.choices import *
|
from wireless.choices import *
|
||||||
from .devicetypes import DeviceTypeSerializer, ModuleTypeSerializer
|
from .devicetypes import DeviceTypeSerializer, ModuleTypeSerializer
|
||||||
from .manufacturers import ManufacturerSerializer
|
from .manufacturers import ManufacturerSerializer
|
||||||
|
from .nested import NestedInterfaceTemplateSerializer
|
||||||
from .roles import InventoryItemRoleSerializer
|
from .roles import InventoryItemRoleSerializer
|
||||||
from ..nested_serializers import *
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ConsolePortTemplateSerializer',
|
'ConsolePortTemplateSerializer',
|
||||||
|
98
netbox/dcim/api/serializers_/nested.py
Normal file
98
netbox/dcim/api/serializers_/nested.py
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from dcim import models
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedDeviceBaySerializer',
|
||||||
|
'NestedDeviceSerializer',
|
||||||
|
'NestedInterfaceSerializer',
|
||||||
|
'NestedInterfaceTemplateSerializer',
|
||||||
|
'NestedLocationSerializer',
|
||||||
|
'NestedModuleBaySerializer',
|
||||||
|
'NestedRegionSerializer',
|
||||||
|
'NestedSiteGroupSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_serializer(
|
||||||
|
exclude_fields=('site_count',),
|
||||||
|
)
|
||||||
|
class NestedRegionSerializer(WritableNestedSerializer):
|
||||||
|
site_count = serializers.IntegerField(read_only=True)
|
||||||
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Region
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth']
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_serializer(
|
||||||
|
exclude_fields=('site_count',),
|
||||||
|
)
|
||||||
|
class NestedSiteGroupSerializer(WritableNestedSerializer):
|
||||||
|
site_count = serializers.IntegerField(read_only=True)
|
||||||
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.SiteGroup
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'site_count', '_depth']
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_serializer(
|
||||||
|
exclude_fields=('rack_count',),
|
||||||
|
)
|
||||||
|
class NestedLocationSerializer(WritableNestedSerializer):
|
||||||
|
rack_count = serializers.IntegerField(read_only=True)
|
||||||
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Location
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'rack_count', '_depth']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedDeviceSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Device
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedInterfaceSerializer(WritableNestedSerializer):
|
||||||
|
device = NestedDeviceSerializer(read_only=True)
|
||||||
|
_occupied = serializers.BooleanField(required=False, read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Interface
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'device', 'name', 'cable', '_occupied']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedInterfaceTemplateSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.InterfaceTemplate
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedDeviceBaySerializer(WritableNestedSerializer):
|
||||||
|
device = NestedDeviceSerializer(read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.DeviceBay
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'device', 'name']
|
||||||
|
|
||||||
|
|
||||||
|
class ModuleBayNestedModuleSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Module
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'serial']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedModuleBaySerializer(WritableNestedSerializer):
|
||||||
|
installed_module = ModuleBayNestedModuleSerializer(required=False, allow_null=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.ModuleBay
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'installed_module', 'name']
|
@ -8,7 +8,7 @@ from ipam.models import ASN
|
|||||||
from netbox.api.fields import ChoiceField, RelatedObjectCountField, SerializedPKRelatedField
|
from netbox.api.fields import ChoiceField, RelatedObjectCountField, SerializedPKRelatedField
|
||||||
from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerializer
|
from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerializer
|
||||||
from tenancy.api.serializers_.tenants import TenantSerializer
|
from tenancy.api.serializers_.tenants import TenantSerializer
|
||||||
from ..nested_serializers import *
|
from .nested import NestedLocationSerializer, NestedRegionSerializer, NestedSiteGroupSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'LocationSerializer',
|
'LocationSerializer',
|
||||||
|
@ -2,7 +2,7 @@ from rest_framework import serializers
|
|||||||
|
|
||||||
from dcim.models import VirtualChassis
|
from dcim.models import VirtualChassis
|
||||||
from netbox.api.serializers import NetBoxModelSerializer
|
from netbox.api.serializers import NetBoxModelSerializer
|
||||||
from ..nested_serializers import *
|
from .nested import NestedDeviceSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'VirtualChassisSerializer',
|
'VirtualChassisSerializer',
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from extras import models
|
from extras import models
|
||||||
@ -20,6 +22,12 @@ __all__ = [
|
|||||||
'NestedWebhookSerializer',
|
'NestedWebhookSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NestedEventRuleSerializer(WritableNestedSerializer):
|
class NestedEventRuleSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
@ -13,4 +13,3 @@ from .serializers_.configtemplates import *
|
|||||||
from .serializers_.savedfilters import *
|
from .serializers_.savedfilters import *
|
||||||
from .serializers_.scripts import *
|
from .serializers_.scripts import *
|
||||||
from .serializers_.tags import *
|
from .serializers_.tags import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema_serializer
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
@ -5,6 +7,7 @@ from ipam import models
|
|||||||
from netbox.api.fields import RelatedObjectCountField
|
from netbox.api.fields import RelatedObjectCountField
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
from .field_serializers import IPAddressField
|
from .field_serializers import IPAddressField
|
||||||
|
from .serializers_.nested import NestedIPAddressSerializer
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'NestedAggregateSerializer',
|
'NestedAggregateSerializer',
|
||||||
@ -25,6 +28,12 @@ __all__ = [
|
|||||||
'NestedVRFSerializer',
|
'NestedVRFSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# ASN ranges
|
# ASN ranges
|
||||||
@ -177,19 +186,6 @@ class NestedIPRangeSerializer(WritableNestedSerializer):
|
|||||||
fields = ['id', 'url', 'display_url', 'display', 'family', 'start_address', 'end_address']
|
fields = ['id', 'url', 'display_url', 'display', 'family', 'start_address', 'end_address']
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# IP addresses
|
|
||||||
#
|
|
||||||
|
|
||||||
class NestedIPAddressSerializer(WritableNestedSerializer):
|
|
||||||
family = serializers.IntegerField(read_only=True)
|
|
||||||
address = IPAddressField()
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.IPAddress
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'family', 'address']
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Services
|
# Services
|
||||||
#
|
#
|
||||||
|
@ -5,4 +5,3 @@ from .serializers_.vlans import *
|
|||||||
from .serializers_.ip import *
|
from .serializers_.ip import *
|
||||||
from .serializers_.fhrpgroups import *
|
from .serializers_.fhrpgroups import *
|
||||||
from .serializers_.services import *
|
from .serializers_.services import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
@ -11,11 +11,11 @@ from netbox.api.serializers import NetBoxModelSerializer
|
|||||||
from tenancy.api.serializers_.tenants import TenantSerializer
|
from tenancy.api.serializers_.tenants import TenantSerializer
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
from .asns import RIRSerializer
|
from .asns import RIRSerializer
|
||||||
|
from .nested import NestedIPAddressSerializer
|
||||||
from .roles import RoleSerializer
|
from .roles import RoleSerializer
|
||||||
from .vlans import VLANSerializer
|
from .vlans import VLANSerializer
|
||||||
from .vrfs import VRFSerializer
|
from .vrfs import VRFSerializer
|
||||||
from ..field_serializers import IPAddressField, IPNetworkField
|
from ..field_serializers import IPAddressField, IPNetworkField
|
||||||
from ..nested_serializers import *
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'AggregateSerializer',
|
'AggregateSerializer',
|
||||||
|
18
netbox/ipam/api/serializers_/nested.py
Normal file
18
netbox/ipam/api/serializers_/nested.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from ipam import models
|
||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from ..field_serializers import IPAddressField
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedIPAddressSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NestedIPAddressSerializer(WritableNestedSerializer):
|
||||||
|
family = serializers.IntegerField(read_only=True)
|
||||||
|
address = IPAddressField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.IPAddress
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'family', 'address']
|
@ -21,7 +21,7 @@ class WritableNestedSerializer(BaseModelSerializer):
|
|||||||
return get_related_object_by_attrs(queryset, data)
|
return get_related_object_by_attrs(queryset, data)
|
||||||
|
|
||||||
|
|
||||||
# Declared here for use by PrimaryModelSerializer, but should be imported from extras.api.nested_serializers
|
# Declared here for use by PrimaryModelSerializer
|
||||||
class NestedTagSerializer(WritableNestedSerializer):
|
class NestedTagSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from drf_spectacular.utils import extend_schema_serializer
|
import warnings
|
||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from serializers_.nested import NestedContactGroupSerializer, NestedTenantGroupSerializer
|
||||||
from tenancy.models import *
|
from tenancy.models import *
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
@ -13,23 +13,17 @@ __all__ = [
|
|||||||
'NestedTenantSerializer',
|
'NestedTenantSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Tenants
|
# Tenants
|
||||||
#
|
#
|
||||||
|
|
||||||
@extend_schema_serializer(
|
|
||||||
exclude_fields=('tenant_count',),
|
|
||||||
)
|
|
||||||
class NestedTenantGroupSerializer(WritableNestedSerializer):
|
|
||||||
tenant_count = serializers.IntegerField(read_only=True)
|
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = TenantGroup
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'tenant_count', '_depth']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedTenantSerializer(WritableNestedSerializer):
|
class NestedTenantSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -41,18 +35,6 @@ class NestedTenantSerializer(WritableNestedSerializer):
|
|||||||
# Contacts
|
# Contacts
|
||||||
#
|
#
|
||||||
|
|
||||||
@extend_schema_serializer(
|
|
||||||
exclude_fields=('contact_count',),
|
|
||||||
)
|
|
||||||
class NestedContactGroupSerializer(WritableNestedSerializer):
|
|
||||||
contact_count = serializers.IntegerField(read_only=True)
|
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = ContactGroup
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'contact_count', '_depth']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedContactRoleSerializer(WritableNestedSerializer):
|
class NestedContactRoleSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
from .serializers_.tenants import *
|
from .serializers_.tenants import *
|
||||||
from .serializers_.contacts import *
|
from .serializers_.contacts import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
@ -8,7 +8,7 @@ from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerial
|
|||||||
from tenancy.choices import ContactPriorityChoices
|
from tenancy.choices import ContactPriorityChoices
|
||||||
from tenancy.models import ContactAssignment, Contact, ContactGroup, ContactRole
|
from tenancy.models import ContactAssignment, Contact, ContactGroup, ContactRole
|
||||||
from utilities.api import get_serializer_for_model
|
from utilities.api import get_serializer_for_model
|
||||||
from ..nested_serializers import *
|
from .nested import NestedContactGroupSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ContactAssignmentSerializer',
|
'ContactAssignmentSerializer',
|
||||||
|
34
netbox/tenancy/api/serializers_/nested.py
Normal file
34
netbox/tenancy/api/serializers_/nested.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from tenancy import models
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedContactGroupSerializer',
|
||||||
|
'NestedTenantGroupSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_serializer(
|
||||||
|
exclude_fields=('contact_count',),
|
||||||
|
)
|
||||||
|
class NestedContactGroupSerializer(WritableNestedSerializer):
|
||||||
|
contact_count = serializers.IntegerField(read_only=True)
|
||||||
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.ContactGroup
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'contact_count', '_depth']
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_serializer(
|
||||||
|
exclude_fields=('tenant_count',),
|
||||||
|
)
|
||||||
|
class NestedTenantGroupSerializer(WritableNestedSerializer):
|
||||||
|
tenant_count = serializers.IntegerField(read_only=True)
|
||||||
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.TenantGroup
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'tenant_count', '_depth']
|
@ -3,7 +3,7 @@ from rest_framework import serializers
|
|||||||
from netbox.api.fields import RelatedObjectCountField
|
from netbox.api.fields import RelatedObjectCountField
|
||||||
from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerializer
|
from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerializer
|
||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
from ..nested_serializers import *
|
from .nested import NestedTenantGroupSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'TenantGroupSerializer',
|
'TenantGroupSerializer',
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
from drf_spectacular.types import OpenApiTypes
|
import warnings
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema_field
|
from drf_spectacular.utils import extend_schema_field
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from core.models import ObjectType
|
from core.models import ObjectType
|
||||||
from netbox.api.fields import ContentTypeField
|
from netbox.api.fields import ContentTypeField
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
from users.models import Group, ObjectPermission, Token, User
|
from serializers_.nested import NestedGroupSerializer, NestedUserSerializer
|
||||||
|
from users.models import ObjectPermission, Token
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'NestedGroupSerializer',
|
'NestedGroupSerializer',
|
||||||
@ -14,25 +16,11 @@ __all__ = [
|
|||||||
'NestedUserSerializer',
|
'NestedUserSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
class NestedGroupSerializer(WritableNestedSerializer):
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
class Meta:
|
DeprecationWarning
|
||||||
model = Group
|
)
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedUserSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = User
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'username']
|
|
||||||
|
|
||||||
@extend_schema_field(OpenApiTypes.STR)
|
|
||||||
def get_display(self, obj):
|
|
||||||
if full_name := obj.get_full_name():
|
|
||||||
return f"{obj.username} ({full_name})"
|
|
||||||
return obj.username
|
|
||||||
|
|
||||||
|
|
||||||
class NestedTokenSerializer(WritableNestedSerializer):
|
class NestedTokenSerializer(WritableNestedSerializer):
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from .serializers_.users import *
|
from .serializers_.users import *
|
||||||
from .serializers_.permissions import *
|
from .serializers_.permissions import *
|
||||||
from .serializers_.tokens import *
|
from .serializers_.tokens import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
30
netbox/users/api/serializers_/nested.py
Normal file
30
netbox/users/api/serializers_/nested.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
from drf_spectacular.types import OpenApiTypes
|
||||||
|
from drf_spectacular.utils import extend_schema_field
|
||||||
|
|
||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from users import models
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedGroupSerializer',
|
||||||
|
'NestedUserSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NestedGroupSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.Group
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedUserSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.User
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'username']
|
||||||
|
|
||||||
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
|
def get_display(self, obj):
|
||||||
|
if full_name := obj.get_full_name():
|
||||||
|
return f"{obj.username} ({full_name})"
|
||||||
|
return obj.username
|
@ -1,10 +1,8 @@
|
|||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from core.models import ObjectType
|
from core.models import ObjectType
|
||||||
from netbox.api.fields import ContentTypeField, SerializedPKRelatedField
|
from netbox.api.fields import ContentTypeField, SerializedPKRelatedField
|
||||||
from netbox.api.serializers import ValidatedModelSerializer
|
from netbox.api.serializers import ValidatedModelSerializer
|
||||||
from users.api.nested_serializers import NestedGroupSerializer, NestedUserSerializer
|
|
||||||
from users.models import Group, ObjectPermission, User
|
from users.models import Group, ObjectPermission, User
|
||||||
|
from .nested import NestedGroupSerializer, NestedUserSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'ObjectPermissionSerializer',
|
'ObjectPermissionSerializer',
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema_serializer
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from netbox.api.fields import RelatedObjectCountField
|
from netbox.api.fields import RelatedObjectCountField
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
from virtualization.models import *
|
from virtualization.models import *
|
||||||
|
from .serializers_.nested import NestedVirtualMachineSerializer, NestedVMInterfaceSerializer
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'NestedClusterGroupSerializer',
|
'NestedClusterGroupSerializer',
|
||||||
@ -14,11 +16,17 @@ __all__ = [
|
|||||||
'NestedVirtualMachineSerializer',
|
'NestedVirtualMachineSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Clusters
|
# Clusters
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
@extend_schema_serializer(
|
@extend_schema_serializer(
|
||||||
exclude_fields=('cluster_count',),
|
exclude_fields=('cluster_count',),
|
||||||
)
|
)
|
||||||
@ -56,21 +64,6 @@ class NestedClusterSerializer(WritableNestedSerializer):
|
|||||||
# Virtual machines
|
# Virtual machines
|
||||||
#
|
#
|
||||||
|
|
||||||
class NestedVirtualMachineSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = VirtualMachine
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedVMInterfaceSerializer(WritableNestedSerializer):
|
|
||||||
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = VMInterface
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'virtual_machine', 'name']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedVirtualDiskSerializer(WritableNestedSerializer):
|
class NestedVirtualDiskSerializer(WritableNestedSerializer):
|
||||||
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
||||||
|
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
from .serializers_.clusters import *
|
from .serializers_.clusters import *
|
||||||
from .serializers_.virtualmachines import *
|
from .serializers_.virtualmachines import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
22
netbox/virtualization/api/serializers_/nested.py
Normal file
22
netbox/virtualization/api/serializers_/nested.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from virtualization import models
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedVirtualMachineSerializer',
|
||||||
|
'NestedVMInterfaceSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NestedVirtualMachineSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.VirtualMachine
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedVMInterfaceSerializer(WritableNestedSerializer):
|
||||||
|
virtual_machine = NestedVirtualMachineSerializer(read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.VMInterface
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'virtual_machine', 'name']
|
@ -18,7 +18,7 @@ from virtualization.choices import *
|
|||||||
from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
|
from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
|
||||||
from vpn.api.serializers_.l2vpn import L2VPNTerminationSerializer
|
from vpn.api.serializers_.l2vpn import L2VPNTerminationSerializer
|
||||||
from .clusters import ClusterSerializer
|
from .clusters import ClusterSerializer
|
||||||
from ..nested_serializers import *
|
from .nested import NestedVMInterfaceSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'VMInterfaceSerializer',
|
'VMInterfaceSerializer',
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
|
import warnings
|
||||||
|
|
||||||
from drf_spectacular.utils import extend_schema_serializer
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from netbox.api.fields import RelatedObjectCountField
|
from netbox.api.fields import RelatedObjectCountField
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
@ -18,6 +19,12 @@ __all__ = (
|
|||||||
'NestedTunnelTerminationSerializer',
|
'NestedTunnelTerminationSerializer',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
|
warnings.warn(
|
||||||
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@extend_schema_serializer(
|
@extend_schema_serializer(
|
||||||
exclude_fields=('tunnel_count',),
|
exclude_fields=('tunnel_count',),
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from .serializers_.crypto import *
|
from .serializers_.crypto import *
|
||||||
from .serializers_.tunnels import *
|
from .serializers_.tunnels import *
|
||||||
from .serializers_.l2vpn import *
|
from .serializers_.l2vpn import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from drf_spectacular.utils import extend_schema_serializer
|
import warnings
|
||||||
from rest_framework import serializers
|
|
||||||
|
|
||||||
from netbox.api.serializers import WritableNestedSerializer
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
from wireless.models import *
|
from wireless.models import *
|
||||||
|
from .serializers_.nested import NestedWirelessLANGroupSerializer, NestedWirelessLinkSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'NestedWirelessLANSerializer',
|
'NestedWirelessLANSerializer',
|
||||||
@ -10,17 +10,11 @@ __all__ = (
|
|||||||
'NestedWirelessLinkSerializer',
|
'NestedWirelessLinkSerializer',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# TODO: Remove in v4.2
|
||||||
@extend_schema_serializer(
|
warnings.warn(
|
||||||
exclude_fields=('wirelesslan_count',),
|
f"Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
|
||||||
|
DeprecationWarning
|
||||||
)
|
)
|
||||||
class NestedWirelessLANGroupSerializer(WritableNestedSerializer):
|
|
||||||
wirelesslan_count = serializers.IntegerField(read_only=True)
|
|
||||||
_depth = serializers.IntegerField(source='level', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = WirelessLANGroup
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'wirelesslan_count', '_depth']
|
|
||||||
|
|
||||||
|
|
||||||
class NestedWirelessLANSerializer(WritableNestedSerializer):
|
class NestedWirelessLANSerializer(WritableNestedSerializer):
|
||||||
@ -28,10 +22,3 @@ class NestedWirelessLANSerializer(WritableNestedSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = WirelessLAN
|
model = WirelessLAN
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'ssid']
|
fields = ['id', 'url', 'display_url', 'display', 'ssid']
|
||||||
|
|
||||||
|
|
||||||
class NestedWirelessLinkSerializer(WritableNestedSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = WirelessLink
|
|
||||||
fields = ['id', 'url', 'display_url', 'display', 'ssid']
|
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
from .serializers_.wirelesslans import *
|
from .serializers_.wirelesslans import *
|
||||||
from .serializers_.wirelesslinks import *
|
from .serializers_.wirelesslinks import *
|
||||||
from .nested_serializers import *
|
|
||||||
|
29
netbox/wireless/api/serializers_/nested.py
Normal file
29
netbox/wireless/api/serializers_/nested.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from drf_spectacular.utils import extend_schema_serializer
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from netbox.api.serializers import WritableNestedSerializer
|
||||||
|
from wireless import models
|
||||||
|
|
||||||
|
__all__ = (
|
||||||
|
'NestedWirelessLANGroupSerializer',
|
||||||
|
'NestedWirelessLinkSerializer',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@extend_schema_serializer(
|
||||||
|
exclude_fields=('wirelesslan_count',),
|
||||||
|
)
|
||||||
|
class NestedWirelessLANGroupSerializer(WritableNestedSerializer):
|
||||||
|
wirelesslan_count = serializers.IntegerField(read_only=True)
|
||||||
|
_depth = serializers.IntegerField(source='level', read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.WirelessLANGroup
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'name', 'slug', 'wirelesslan_count', '_depth']
|
||||||
|
|
||||||
|
|
||||||
|
class NestedWirelessLinkSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = models.WirelessLink
|
||||||
|
fields = ['id', 'url', 'display_url', 'display', 'ssid']
|
@ -6,7 +6,7 @@ from netbox.api.serializers import NestedGroupModelSerializer, NetBoxModelSerial
|
|||||||
from tenancy.api.serializers_.tenants import TenantSerializer
|
from tenancy.api.serializers_.tenants import TenantSerializer
|
||||||
from wireless.choices import *
|
from wireless.choices import *
|
||||||
from wireless.models import WirelessLAN, WirelessLANGroup
|
from wireless.models import WirelessLAN, WirelessLANGroup
|
||||||
from ..nested_serializers import *
|
from .nested import NestedWirelessLANGroupSerializer
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'WirelessLANGroupSerializer',
|
'WirelessLANGroupSerializer',
|
||||||
|
Loading…
Reference in New Issue
Block a user