Fixes: #5450 - Change all *_count and count_* serializers to have default value

This commit is contained in:
Daniel Sheppard 2020-12-15 09:00:25 -06:00
parent 1f4954bf0e
commit beeb6b5946
15 changed files with 74 additions and 73 deletions

View File

@ -4,6 +4,7 @@
### Bug Fixes ### Bug Fixes
* [#5450](https://github.com/netbox-community/netbox/issues/5450) - API serializer foreign count fields do not have a default value
* [#5458](https://github.com/netbox-community/netbox/issues/5458) - Creating a component template throws an exception * [#5458](https://github.com/netbox-community/netbox/issues/5458) - Creating a component template throws an exception
* [#5461](https://github.com/netbox-community/netbox/issues/5461) - Rack Elevations throw reverse match exception * [#5461](https://github.com/netbox-community/netbox/issues/5461) - Rack Elevations throw reverse match exception

View File

@ -17,7 +17,7 @@ __all__ = [
class NestedProviderSerializer(WritableNestedSerializer): class NestedProviderSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail') url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
circuit_count = serializers.IntegerField(read_only=True) circuit_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Provider model = Provider
@ -30,7 +30,7 @@ class NestedProviderSerializer(WritableNestedSerializer):
class NestedCircuitTypeSerializer(WritableNestedSerializer): class NestedCircuitTypeSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail') url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
circuit_count = serializers.IntegerField(read_only=True) circuit_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = CircuitType model = CircuitType

View File

@ -17,7 +17,7 @@ from .nested_serializers import *
class ProviderSerializer(TaggedObjectSerializer, CustomFieldModelSerializer): class ProviderSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail') url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
circuit_count = serializers.IntegerField(read_only=True) circuit_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Provider model = Provider
@ -33,7 +33,7 @@ class ProviderSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
class CircuitTypeSerializer(ValidatedModelSerializer): class CircuitTypeSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail') url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
circuit_count = serializers.IntegerField(read_only=True) circuit_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = CircuitType model = CircuitType

View File

@ -45,7 +45,7 @@ __all__ = [
class NestedRegionSerializer(WritableNestedSerializer): class NestedRegionSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail')
site_count = serializers.IntegerField(read_only=True) site_count = serializers.IntegerField(read_only=True, default=0)
_depth = serializers.IntegerField(source='level', read_only=True) _depth = serializers.IntegerField(source='level', read_only=True)
class Meta: class Meta:
@ -67,7 +67,7 @@ class NestedSiteSerializer(WritableNestedSerializer):
class NestedRackGroupSerializer(WritableNestedSerializer): class NestedRackGroupSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackgroup-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackgroup-detail')
rack_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True, default=0)
_depth = serializers.IntegerField(source='level', read_only=True) _depth = serializers.IntegerField(source='level', read_only=True)
class Meta: class Meta:
@ -77,7 +77,7 @@ class NestedRackGroupSerializer(WritableNestedSerializer):
class NestedRackRoleSerializer(WritableNestedSerializer): class NestedRackRoleSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
rack_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.RackRole model = models.RackRole
@ -86,7 +86,7 @@ class NestedRackRoleSerializer(WritableNestedSerializer):
class NestedRackSerializer(WritableNestedSerializer): class NestedRackSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rack-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rack-detail')
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.Rack model = models.Rack
@ -111,7 +111,7 @@ class NestedRackReservationSerializer(WritableNestedSerializer):
class NestedManufacturerSerializer(WritableNestedSerializer): class NestedManufacturerSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
devicetype_count = serializers.IntegerField(read_only=True) devicetype_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.Manufacturer model = models.Manufacturer
@ -121,7 +121,7 @@ class NestedManufacturerSerializer(WritableNestedSerializer):
class NestedDeviceTypeSerializer(WritableNestedSerializer): class NestedDeviceTypeSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail')
manufacturer = NestedManufacturerSerializer(read_only=True) manufacturer = NestedManufacturerSerializer(read_only=True)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.DeviceType model = models.DeviceType
@ -198,8 +198,8 @@ class NestedDeviceBayTemplateSerializer(WritableNestedSerializer):
class NestedDeviceRoleSerializer(WritableNestedSerializer): class NestedDeviceRoleSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.DeviceRole model = models.DeviceRole
@ -208,8 +208,8 @@ class NestedDeviceRoleSerializer(WritableNestedSerializer):
class NestedPlatformSerializer(WritableNestedSerializer): class NestedPlatformSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.Platform model = models.Platform
@ -325,7 +325,7 @@ class NestedCableSerializer(serializers.ModelSerializer):
class NestedVirtualChassisSerializer(WritableNestedSerializer): class NestedVirtualChassisSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail')
master = NestedDeviceSerializer() master = NestedDeviceSerializer()
member_count = serializers.IntegerField(read_only=True) member_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.VirtualChassis model = models.VirtualChassis
@ -338,7 +338,7 @@ class NestedVirtualChassisSerializer(WritableNestedSerializer):
class NestedPowerPanelSerializer(WritableNestedSerializer): class NestedPowerPanelSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerpanel-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:powerpanel-detail')
powerfeed_count = serializers.IntegerField(read_only=True) powerfeed_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.PowerPanel model = models.PowerPanel

View File

@ -85,7 +85,7 @@ class ConnectedEndpointSerializer(ValidatedModelSerializer):
class RegionSerializer(serializers.ModelSerializer): class RegionSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:region-detail')
parent = NestedRegionSerializer(required=False, allow_null=True) parent = NestedRegionSerializer(required=False, allow_null=True)
site_count = serializers.IntegerField(read_only=True) site_count = serializers.IntegerField(read_only=True, default=0)
_depth = serializers.IntegerField(source='level', read_only=True) _depth = serializers.IntegerField(source='level', read_only=True)
class Meta: class Meta:
@ -99,12 +99,12 @@ class SiteSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
region = NestedRegionSerializer(required=False, allow_null=True) region = NestedRegionSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
time_zone = TimeZoneField(required=False) time_zone = TimeZoneField(required=False)
circuit_count = serializers.IntegerField(read_only=True) circuit_count = serializers.IntegerField(read_only=True, default=0)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
rack_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
vlan_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Site model = Site
@ -124,7 +124,7 @@ class RackGroupSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackgroup-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackgroup-detail')
site = NestedSiteSerializer() site = NestedSiteSerializer()
parent = NestedRackGroupSerializer(required=False, allow_null=True) parent = NestedRackGroupSerializer(required=False, allow_null=True)
rack_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True, default=0)
_depth = serializers.IntegerField(source='level', read_only=True) _depth = serializers.IntegerField(source='level', read_only=True)
class Meta: class Meta:
@ -134,7 +134,7 @@ class RackGroupSerializer(ValidatedModelSerializer):
class RackRoleSerializer(ValidatedModelSerializer): class RackRoleSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rackrole-detail')
rack_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = RackRole model = RackRole
@ -151,8 +151,8 @@ class RackSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
type = ChoiceField(choices=RackTypeChoices, allow_blank=True, required=False) type = ChoiceField(choices=RackTypeChoices, allow_blank=True, required=False)
width = ChoiceField(choices=RackWidthChoices, required=False) width = ChoiceField(choices=RackWidthChoices, required=False)
outer_unit = ChoiceField(choices=RackDimensionUnitChoices, allow_blank=True, required=False) outer_unit = ChoiceField(choices=RackDimensionUnitChoices, allow_blank=True, required=False)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
powerfeed_count = serializers.IntegerField(read_only=True) powerfeed_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Rack model = Rack
@ -244,9 +244,9 @@ class RackElevationDetailFilterSerializer(serializers.Serializer):
class ManufacturerSerializer(ValidatedModelSerializer): class ManufacturerSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:manufacturer-detail')
devicetype_count = serializers.IntegerField(read_only=True) devicetype_count = serializers.IntegerField(read_only=True, default=0)
inventoryitem_count = serializers.IntegerField(read_only=True) inventoryitem_count = serializers.IntegerField(read_only=True, default=0)
platform_count = serializers.IntegerField(read_only=True) platform_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Manufacturer model = Manufacturer
@ -259,7 +259,7 @@ class DeviceTypeSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicetype-detail')
manufacturer = NestedManufacturerSerializer() manufacturer = NestedManufacturerSerializer()
subdevice_role = ChoiceField(choices=SubdeviceRoleChoices, allow_blank=True, required=False) subdevice_role = ChoiceField(choices=SubdeviceRoleChoices, allow_blank=True, required=False)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = DeviceType model = DeviceType
@ -380,8 +380,8 @@ class DeviceBayTemplateSerializer(ValidatedModelSerializer):
class DeviceRoleSerializer(ValidatedModelSerializer): class DeviceRoleSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicerole-detail')
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = DeviceRole model = DeviceRole
@ -393,8 +393,8 @@ class DeviceRoleSerializer(ValidatedModelSerializer):
class PlatformSerializer(ValidatedModelSerializer): class PlatformSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:platform-detail')
manufacturer = NestedManufacturerSerializer(required=False, allow_null=True) manufacturer = NestedManufacturerSerializer(required=False, allow_null=True)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Platform model = Platform
@ -573,7 +573,7 @@ class InterfaceSerializer(TaggedObjectSerializer, CableTerminationSerializer, Co
many=True many=True
) )
cable = NestedCableSerializer(read_only=True) cable = NestedCableSerializer(read_only=True)
count_ipaddresses = serializers.IntegerField(read_only=True) count_ipaddresses = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Interface model = Interface
@ -805,7 +805,7 @@ class InterfaceConnectionSerializer(ValidatedModelSerializer):
class VirtualChassisSerializer(TaggedObjectSerializer, CustomFieldModelSerializer): class VirtualChassisSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail') url = serializers.HyperlinkedIdentityField(view_name='dcim-api:virtualchassis-detail')
master = NestedDeviceSerializer(required=False) master = NestedDeviceSerializer(required=False)
member_count = serializers.IntegerField(read_only=True) member_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = VirtualChassis model = VirtualChassis
@ -824,7 +824,7 @@ class PowerPanelSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
allow_null=True, allow_null=True,
default=None default=None
) )
powerfeed_count = serializers.IntegerField(read_only=True) powerfeed_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = PowerPanel model = PowerPanel

View File

@ -66,7 +66,7 @@ class ExportTemplateSerializer(ValidatedModelSerializer):
class TagSerializer(ValidatedModelSerializer): class TagSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='extras-api:tag-detail') url = serializers.HyperlinkedIdentityField(view_name='extras-api:tag-detail')
tagged_items = serializers.IntegerField(read_only=True) tagged_items = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Tag model = Tag

View File

@ -23,7 +23,7 @@ __all__ = [
class NestedVRFSerializer(WritableNestedSerializer): class NestedVRFSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.VRF model = models.VRF
@ -48,7 +48,7 @@ class NestedRouteTargetSerializer(WritableNestedSerializer):
class NestedRIRSerializer(WritableNestedSerializer): class NestedRIRSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
aggregate_count = serializers.IntegerField(read_only=True) aggregate_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.RIR model = models.RIR
@ -70,8 +70,8 @@ class NestedAggregateSerializer(WritableNestedSerializer):
class NestedRoleSerializer(WritableNestedSerializer): class NestedRoleSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
vlan_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.Role model = models.Role
@ -80,7 +80,7 @@ class NestedRoleSerializer(WritableNestedSerializer):
class NestedVLANGroupSerializer(WritableNestedSerializer): class NestedVLANGroupSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
vlan_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = models.VLANGroup model = models.VLANGroup

View File

@ -27,8 +27,8 @@ class VRFSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
import_targets = NestedRouteTargetSerializer(required=False, allow_null=True, many=True) import_targets = NestedRouteTargetSerializer(required=False, allow_null=True, many=True)
export_targets = NestedRouteTargetSerializer(required=False, allow_null=True, many=True) export_targets = NestedRouteTargetSerializer(required=False, allow_null=True, many=True)
ipaddress_count = serializers.IntegerField(read_only=True) ipaddress_count = serializers.IntegerField(read_only=True, default=0)
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = VRF model = VRF
@ -59,7 +59,7 @@ class RouteTargetSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
class RIRSerializer(ValidatedModelSerializer): class RIRSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
aggregate_count = serializers.IntegerField(read_only=True) aggregate_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = RIR model = RIR
@ -87,8 +87,8 @@ class AggregateSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
class RoleSerializer(ValidatedModelSerializer): class RoleSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
vlan_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Role model = Role
@ -98,7 +98,7 @@ class RoleSerializer(ValidatedModelSerializer):
class VLANGroupSerializer(ValidatedModelSerializer): class VLANGroupSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail') url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
site = NestedSiteSerializer(required=False, allow_null=True) site = NestedSiteSerializer(required=False, allow_null=True)
vlan_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = VLANGroup model = VLANGroup
@ -126,7 +126,7 @@ class VLANSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
status = ChoiceField(choices=VLANStatusChoices, required=False) status = ChoiceField(choices=VLANStatusChoices, required=False)
role = NestedRoleSerializer(required=False, allow_null=True) role = NestedRoleSerializer(required=False, allow_null=True)
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = VLAN model = VLAN

View File

@ -19,7 +19,7 @@ class NestedSecretSerializer(WritableNestedSerializer):
class NestedSecretRoleSerializer(WritableNestedSerializer): class NestedSecretRoleSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='secrets-api:secretrole-detail') url = serializers.HyperlinkedIdentityField(view_name='secrets-api:secretrole-detail')
secret_count = serializers.IntegerField(read_only=True) secret_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = SecretRole model = SecretRole

View File

@ -17,7 +17,7 @@ from .nested_serializers import *
class SecretRoleSerializer(ValidatedModelSerializer): class SecretRoleSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='secrets-api:secretrole-detail') url = serializers.HyperlinkedIdentityField(view_name='secrets-api:secretrole-detail')
secret_count = serializers.IntegerField(read_only=True) secret_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = SecretRole model = SecretRole

View File

@ -15,7 +15,7 @@ __all__ = [
class NestedTenantGroupSerializer(WritableNestedSerializer): class NestedTenantGroupSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail') url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail')
tenant_count = serializers.IntegerField(read_only=True) tenant_count = serializers.IntegerField(read_only=True, default=0)
_depth = serializers.IntegerField(source='level', read_only=True) _depth = serializers.IntegerField(source='level', read_only=True)
class Meta: class Meta:

View File

@ -14,7 +14,7 @@ from .nested_serializers import *
class TenantGroupSerializer(ValidatedModelSerializer): class TenantGroupSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail') url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail')
parent = NestedTenantGroupSerializer(required=False, allow_null=True) parent = NestedTenantGroupSerializer(required=False, allow_null=True)
tenant_count = serializers.IntegerField(read_only=True) tenant_count = serializers.IntegerField(read_only=True, default=0)
_depth = serializers.IntegerField(source='level', read_only=True) _depth = serializers.IntegerField(source='level', read_only=True)
class Meta: class Meta:
@ -25,16 +25,16 @@ class TenantGroupSerializer(ValidatedModelSerializer):
class TenantSerializer(TaggedObjectSerializer, CustomFieldModelSerializer): class TenantSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenant-detail') url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenant-detail')
group = NestedTenantGroupSerializer(required=False) group = NestedTenantGroupSerializer(required=False)
circuit_count = serializers.IntegerField(read_only=True) circuit_count = serializers.IntegerField(read_only=True, default=0)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
ipaddress_count = serializers.IntegerField(read_only=True) ipaddress_count = serializers.IntegerField(read_only=True, default=0)
prefix_count = serializers.IntegerField(read_only=True) prefix_count = serializers.IntegerField(read_only=True, default=0)
rack_count = serializers.IntegerField(read_only=True) rack_count = serializers.IntegerField(read_only=True, default=0)
site_count = serializers.IntegerField(read_only=True) site_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
vlan_count = serializers.IntegerField(read_only=True) vlan_count = serializers.IntegerField(read_only=True, default=0)
vrf_count = serializers.IntegerField(read_only=True) vrf_count = serializers.IntegerField(read_only=True, default=0)
cluster_count = serializers.IntegerField(read_only=True) cluster_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Tenant model = Tenant

View File

@ -40,7 +40,7 @@ class UserSerializer(ValidatedModelSerializer):
class GroupSerializer(ValidatedModelSerializer): class GroupSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='users-api:group-detail') url = serializers.HyperlinkedIdentityField(view_name='users-api:group-detail')
user_count = serializers.IntegerField(read_only=True) user_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Group model = Group

View File

@ -19,7 +19,7 @@ __all__ = [
class NestedClusterTypeSerializer(WritableNestedSerializer): class NestedClusterTypeSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail') url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
cluster_count = serializers.IntegerField(read_only=True) cluster_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = ClusterType model = ClusterType
@ -28,7 +28,7 @@ class NestedClusterTypeSerializer(WritableNestedSerializer):
class NestedClusterGroupSerializer(WritableNestedSerializer): class NestedClusterGroupSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail') url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
cluster_count = serializers.IntegerField(read_only=True) cluster_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = ClusterGroup model = ClusterGroup
@ -37,7 +37,7 @@ class NestedClusterGroupSerializer(WritableNestedSerializer):
class NestedClusterSerializer(WritableNestedSerializer): class NestedClusterSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail') url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:cluster-detail')
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Cluster model = Cluster

View File

@ -20,7 +20,7 @@ from .nested_serializers import *
class ClusterTypeSerializer(ValidatedModelSerializer): class ClusterTypeSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail') url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustertype-detail')
cluster_count = serializers.IntegerField(read_only=True) cluster_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = ClusterType model = ClusterType
@ -29,7 +29,7 @@ class ClusterTypeSerializer(ValidatedModelSerializer):
class ClusterGroupSerializer(ValidatedModelSerializer): class ClusterGroupSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail') url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:clustergroup-detail')
cluster_count = serializers.IntegerField(read_only=True) cluster_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = ClusterGroup model = ClusterGroup
@ -42,8 +42,8 @@ class ClusterSerializer(TaggedObjectSerializer, CustomFieldModelSerializer):
group = NestedClusterGroupSerializer(required=False, allow_null=True) group = NestedClusterGroupSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
site = NestedSiteSerializer(required=False, allow_null=True) site = NestedSiteSerializer(required=False, allow_null=True)
device_count = serializers.IntegerField(read_only=True) device_count = serializers.IntegerField(read_only=True, default=0)
virtualmachine_count = serializers.IntegerField(read_only=True) virtualmachine_count = serializers.IntegerField(read_only=True, default=0)
class Meta: class Meta:
model = Cluster model = Cluster