Просмотр исходного кода

Introduce OrganizationalModelSerializer

Jeremy Stretch 5 лет назад
Родитель
Сommit
ed059d80d6

+ 4 - 3
netbox/circuits/api/serializers.py

@@ -2,11 +2,12 @@ from rest_framework import serializers
 
 from circuits.choices import CircuitStatusChoices
 from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
-from dcim.api.nested_serializers import NestedCableSerializer, NestedInterfaceSerializer, NestedSiteSerializer
+from dcim.api.nested_serializers import NestedCableSerializer, NestedSiteSerializer
 from dcim.api.serializers import CableTerminationSerializer, ConnectedEndpointSerializer
 from extras.api.customfields import CustomFieldModelSerializer
 from extras.api.serializers import TaggedObjectSerializer
-from netbox.api import ChoiceField, ValidatedModelSerializer, WritableNestedSerializer
+from netbox.api import ChoiceField
+from netbox.api.serializers import OrganizationalModelSerializer, WritableNestedSerializer
 from tenancy.api.nested_serializers import NestedTenantSerializer
 from .nested_serializers import *
 
@@ -31,7 +32,7 @@ class ProviderSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
 # Circuits
 #
 
-class CircuitTypeSerializer(CustomFieldModelSerializer):
+class CircuitTypeSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
     circuit_count = serializers.IntegerField(read_only=True)
 

+ 6 - 9
netbox/dcim/api/serializers.py

@@ -13,15 +13,12 @@ from dcim.models import (
     PowerPortTemplate, Rack, RackGroup, RackReservation, RackRole, RearPort, RearPortTemplate, Region, Site,
     VirtualChassis,
 )
-from dcim.utils import decompile_path_node
 from extras.api.customfields import CustomFieldModelSerializer
 from extras.api.serializers import TaggedObjectSerializer
 from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSerializer
 from ipam.models import VLAN
-from netbox.api import (
-    ChoiceField, ContentTypeField, SerializedPKRelatedField, TimeZoneField, ValidatedModelSerializer,
-    WritableNestedSerializer,
-)
+from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField, TimeZoneField
+from netbox.api.serializers import OrganizationalModelSerializer, ValidatedModelSerializer, WritableNestedSerializer
 from tenancy.api.nested_serializers import NestedTenantSerializer
 from users.api.nested_serializers import NestedUserSerializer
 from utilities.api import get_serializer_for_model
@@ -138,7 +135,7 @@ class RackGroupSerializer(CustomFieldModelSerializer):
         ]
 
 
-class RackRoleSerializer(CustomFieldModelSerializer):
+class RackRoleSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
     rack_count = serializers.IntegerField(read_only=True)
 
@@ -251,7 +248,7 @@ class RackElevationDetailFilterSerializer(serializers.Serializer):
 # Device types
 #
 
-class ManufacturerSerializer(CustomFieldModelSerializer):
+class ManufacturerSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
     devicetype_count = serializers.IntegerField(read_only=True)
     inventoryitem_count = serializers.IntegerField(read_only=True)
@@ -388,7 +385,7 @@ class DeviceBayTemplateSerializer(ValidatedModelSerializer):
 # Devices
 #
 
-class DeviceRoleSerializer(CustomFieldModelSerializer):
+class DeviceRoleSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
     device_count = serializers.IntegerField(read_only=True)
     virtualmachine_count = serializers.IntegerField(read_only=True)
@@ -401,7 +398,7 @@ class DeviceRoleSerializer(CustomFieldModelSerializer):
         ]
 
 
-class PlatformSerializer(CustomFieldModelSerializer):
+class PlatformSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
     manufacturer = NestedManufacturerSerializer(required=False, allow_null=True)
     device_count = serializers.IntegerField(read_only=True)

+ 5 - 4
netbox/ipam/api/serializers.py

@@ -11,7 +11,8 @@ from extras.api.serializers import TaggedObjectSerializer
 from ipam.choices import *
 from ipam.constants import IPADDRESS_ASSIGNMENT_MODELS
 from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, RouteTarget, Service, VLAN, VLANGroup, VRF
-from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField, ValidatedModelSerializer
+from netbox.api import ChoiceField, ContentTypeField, SerializedPKRelatedField
+from netbox.api.serializers import OrganizationalModelSerializer
 from tenancy.api.nested_serializers import NestedTenantSerializer
 from utilities.api import get_serializer_for_model
 from virtualization.api.nested_serializers import NestedVirtualMachineSerializer
@@ -67,7 +68,7 @@ class RouteTargetSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
 # RIRs/aggregates
 #
 
-class RIRSerializer(CustomFieldModelSerializer):
+class RIRSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
     aggregate_count = serializers.IntegerField(read_only=True)
 
@@ -98,7 +99,7 @@ class AggregateSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
 # VLANs
 #
 
-class RoleSerializer(CustomFieldModelSerializer):
+class RoleSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
     prefix_count = serializers.IntegerField(read_only=True)
     vlan_count = serializers.IntegerField(read_only=True)
@@ -111,7 +112,7 @@ class RoleSerializer(CustomFieldModelSerializer):
         ]
 
 
-class VLANGroupSerializer(CustomFieldModelSerializer):
+class VLANGroupSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
     site = NestedSiteSerializer(required=False, allow_null=True)
     vlan_count = serializers.IntegerField(read_only=True)

+ 4 - 0
netbox/netbox/api/serializers.py

@@ -35,6 +35,10 @@ class ValidatedModelSerializer(serializers.ModelSerializer):
         return data
 
 
+class OrganizationalModelSerializer(ValidatedModelSerializer):
+    pass
+
+
 class WritableNestedSerializer(serializers.ModelSerializer):
     """
     Returns a nested representation of an object on read, but accepts only a primary key on write.

+ 4 - 3
netbox/virtualization/api/serializers.py

@@ -7,7 +7,8 @@ from extras.api.customfields import CustomFieldModelSerializer
 from extras.api.serializers import TaggedObjectSerializer
 from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSerializer
 from ipam.models import VLAN
-from netbox.api import ChoiceField, SerializedPKRelatedField, ValidatedModelSerializer
+from netbox.api import ChoiceField, SerializedPKRelatedField
+from netbox.api.serializers import OrganizationalModelSerializer, ValidatedModelSerializer
 from tenancy.api.nested_serializers import NestedTenantSerializer
 from virtualization.choices import *
 from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
@@ -18,7 +19,7 @@ from .nested_serializers import *
 # Clusters
 #
 
-class ClusterTypeSerializer(CustomFieldModelSerializer):
+class ClusterTypeSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
     cluster_count = serializers.IntegerField(read_only=True)
 
@@ -29,7 +30,7 @@ class ClusterTypeSerializer(CustomFieldModelSerializer):
         ]
 
 
-class ClusterGroupSerializer(CustomFieldModelSerializer):
+class ClusterGroupSerializer(OrganizationalModelSerializer):
     url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
     cluster_count = serializers.IntegerField(read_only=True)