|
@@ -74,8 +74,12 @@ class CableTraceMixin(object):
|
|
|
#
|
|
#
|
|
|
|
|
|
|
|
class RegionViewSet(ModelViewSet):
|
|
class RegionViewSet(ModelViewSet):
|
|
|
- queryset = Region.objects.annotate(
|
|
|
|
|
- site_count=Count('sites')
|
|
|
|
|
|
|
+ queryset = Region.objects.add_related_count(
|
|
|
|
|
+ Region.objects.all(),
|
|
|
|
|
+ Site,
|
|
|
|
|
+ 'region',
|
|
|
|
|
+ 'site_count',
|
|
|
|
|
+ cumulative=True
|
|
|
)
|
|
)
|
|
|
serializer_class = serializers.RegionSerializer
|
|
serializer_class = serializers.RegionSerializer
|
|
|
filterset_class = filters.RegionFilterSet
|
|
filterset_class = filters.RegionFilterSet
|
|
@@ -95,7 +99,7 @@ class SiteViewSet(CustomFieldModelViewSet):
|
|
|
vlan_count=get_subquery(VLAN, 'site'),
|
|
vlan_count=get_subquery(VLAN, 'site'),
|
|
|
circuit_count=get_subquery(Circuit, 'terminations__site'),
|
|
circuit_count=get_subquery(Circuit, 'terminations__site'),
|
|
|
virtualmachine_count=get_subquery(VirtualMachine, 'cluster__site'),
|
|
virtualmachine_count=get_subquery(VirtualMachine, 'cluster__site'),
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*Site._meta.ordering)
|
|
|
serializer_class = serializers.SiteSerializer
|
|
serializer_class = serializers.SiteSerializer
|
|
|
filterset_class = filters.SiteFilterSet
|
|
filterset_class = filters.SiteFilterSet
|
|
|
|
|
|
|
@@ -115,9 +119,13 @@ class SiteViewSet(CustomFieldModelViewSet):
|
|
|
#
|
|
#
|
|
|
|
|
|
|
|
class RackGroupViewSet(ModelViewSet):
|
|
class RackGroupViewSet(ModelViewSet):
|
|
|
- queryset = RackGroup.objects.prefetch_related('site').annotate(
|
|
|
|
|
- rack_count=Count('racks')
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ queryset = RackGroup.objects.add_related_count(
|
|
|
|
|
+ RackGroup.objects.all(),
|
|
|
|
|
+ Rack,
|
|
|
|
|
+ 'group',
|
|
|
|
|
+ 'rack_count',
|
|
|
|
|
+ cumulative=True
|
|
|
|
|
+ ).prefetch_related('site')
|
|
|
serializer_class = serializers.RackGroupSerializer
|
|
serializer_class = serializers.RackGroupSerializer
|
|
|
filterset_class = filters.RackGroupFilterSet
|
|
filterset_class = filters.RackGroupFilterSet
|
|
|
|
|
|
|
@@ -129,7 +137,7 @@ class RackGroupViewSet(ModelViewSet):
|
|
|
class RackRoleViewSet(ModelViewSet):
|
|
class RackRoleViewSet(ModelViewSet):
|
|
|
queryset = RackRole.objects.annotate(
|
|
queryset = RackRole.objects.annotate(
|
|
|
rack_count=Count('racks')
|
|
rack_count=Count('racks')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*RackRole._meta.ordering)
|
|
|
serializer_class = serializers.RackRoleSerializer
|
|
serializer_class = serializers.RackRoleSerializer
|
|
|
filterset_class = filters.RackRoleFilterSet
|
|
filterset_class = filters.RackRoleFilterSet
|
|
|
|
|
|
|
@@ -144,7 +152,7 @@ class RackViewSet(CustomFieldModelViewSet):
|
|
|
).annotate(
|
|
).annotate(
|
|
|
device_count=get_subquery(Device, 'rack'),
|
|
device_count=get_subquery(Device, 'rack'),
|
|
|
powerfeed_count=get_subquery(PowerFeed, 'rack')
|
|
powerfeed_count=get_subquery(PowerFeed, 'rack')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*Rack._meta.ordering)
|
|
|
serializer_class = serializers.RackSerializer
|
|
serializer_class = serializers.RackSerializer
|
|
|
filterset_class = filters.RackFilterSet
|
|
filterset_class = filters.RackFilterSet
|
|
|
|
|
|
|
@@ -217,7 +225,7 @@ class ManufacturerViewSet(ModelViewSet):
|
|
|
devicetype_count=get_subquery(DeviceType, 'manufacturer'),
|
|
devicetype_count=get_subquery(DeviceType, 'manufacturer'),
|
|
|
inventoryitem_count=get_subquery(InventoryItem, 'manufacturer'),
|
|
inventoryitem_count=get_subquery(InventoryItem, 'manufacturer'),
|
|
|
platform_count=get_subquery(Platform, 'manufacturer')
|
|
platform_count=get_subquery(Platform, 'manufacturer')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*Manufacturer._meta.ordering)
|
|
|
serializer_class = serializers.ManufacturerSerializer
|
|
serializer_class = serializers.ManufacturerSerializer
|
|
|
filterset_class = filters.ManufacturerFilterSet
|
|
filterset_class = filters.ManufacturerFilterSet
|
|
|
|
|
|
|
@@ -229,7 +237,7 @@ class ManufacturerViewSet(ModelViewSet):
|
|
|
class DeviceTypeViewSet(CustomFieldModelViewSet):
|
|
class DeviceTypeViewSet(CustomFieldModelViewSet):
|
|
|
queryset = DeviceType.objects.prefetch_related('manufacturer', 'tags').annotate(
|
|
queryset = DeviceType.objects.prefetch_related('manufacturer', 'tags').annotate(
|
|
|
device_count=Count('instances')
|
|
device_count=Count('instances')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*DeviceType._meta.ordering)
|
|
|
serializer_class = serializers.DeviceTypeSerializer
|
|
serializer_class = serializers.DeviceTypeSerializer
|
|
|
filterset_class = filters.DeviceTypeFilterSet
|
|
filterset_class = filters.DeviceTypeFilterSet
|
|
|
|
|
|
|
@@ -294,7 +302,7 @@ class DeviceRoleViewSet(ModelViewSet):
|
|
|
queryset = DeviceRole.objects.annotate(
|
|
queryset = DeviceRole.objects.annotate(
|
|
|
device_count=get_subquery(Device, 'device_role'),
|
|
device_count=get_subquery(Device, 'device_role'),
|
|
|
virtualmachine_count=get_subquery(VirtualMachine, 'role')
|
|
virtualmachine_count=get_subquery(VirtualMachine, 'role')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*DeviceRole._meta.ordering)
|
|
|
serializer_class = serializers.DeviceRoleSerializer
|
|
serializer_class = serializers.DeviceRoleSerializer
|
|
|
filterset_class = filters.DeviceRoleFilterSet
|
|
filterset_class = filters.DeviceRoleFilterSet
|
|
|
|
|
|
|
@@ -307,7 +315,7 @@ class PlatformViewSet(ModelViewSet):
|
|
|
queryset = Platform.objects.annotate(
|
|
queryset = Platform.objects.annotate(
|
|
|
device_count=get_subquery(Device, 'platform'),
|
|
device_count=get_subquery(Device, 'platform'),
|
|
|
virtualmachine_count=get_subquery(VirtualMachine, 'platform')
|
|
virtualmachine_count=get_subquery(VirtualMachine, 'platform')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*Platform._meta.ordering)
|
|
|
serializer_class = serializers.PlatformSerializer
|
|
serializer_class = serializers.PlatformSerializer
|
|
|
filterset_class = filters.PlatformFilterSet
|
|
filterset_class = filters.PlatformFilterSet
|
|
|
|
|
|
|
@@ -583,7 +591,7 @@ class CableViewSet(ModelViewSet):
|
|
|
class VirtualChassisViewSet(ModelViewSet):
|
|
class VirtualChassisViewSet(ModelViewSet):
|
|
|
queryset = VirtualChassis.objects.prefetch_related('tags').annotate(
|
|
queryset = VirtualChassis.objects.prefetch_related('tags').annotate(
|
|
|
member_count=Count('members')
|
|
member_count=Count('members')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*VirtualChassis._meta.ordering)
|
|
|
serializer_class = serializers.VirtualChassisSerializer
|
|
serializer_class = serializers.VirtualChassisSerializer
|
|
|
filterset_class = filters.VirtualChassisFilterSet
|
|
filterset_class = filters.VirtualChassisFilterSet
|
|
|
|
|
|
|
@@ -597,7 +605,7 @@ class PowerPanelViewSet(ModelViewSet):
|
|
|
'site', 'rack_group'
|
|
'site', 'rack_group'
|
|
|
).annotate(
|
|
).annotate(
|
|
|
powerfeed_count=Count('powerfeeds')
|
|
powerfeed_count=Count('powerfeeds')
|
|
|
- )
|
|
|
|
|
|
|
+ ).order_by(*PowerPanel._meta.ordering)
|
|
|
serializer_class = serializers.PowerPanelSerializer
|
|
serializer_class = serializers.PowerPanelSerializer
|
|
|
filterset_class = filters.PowerPanelFilterSet
|
|
filterset_class = filters.PowerPanelFilterSet
|
|
|
|
|
|