|
@@ -8,6 +8,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin
|
|
|
from django.core.exceptions import ValidationError
|
|
|
from django.core.urlresolvers import reverse
|
|
|
from django.db.models import Count, Sum
|
|
|
+from django.db.models.functions import Coalesce
|
|
|
from django.http import HttpResponseRedirect
|
|
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
|
from django.utils.http import urlencode
|
|
@@ -137,7 +138,7 @@ class SiteBulkEditView(PermissionRequiredMixin, BulkEditView):
|
|
|
#
|
|
|
|
|
|
class RackGroupListView(ObjectListView):
|
|
|
- queryset = RackGroup.objects.annotate(rack_count=Count('racks'))
|
|
|
+ queryset = RackGroup.objects.select_related('site').annotate(rack_count=Count('racks'))
|
|
|
filter = filters.RackGroupFilter
|
|
|
filter_form = forms.RackGroupFilterForm
|
|
|
table = tables.RackGroupTable
|
|
@@ -188,8 +189,9 @@ class RackRoleBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
|
|
#
|
|
|
|
|
|
class RackListView(ObjectListView):
|
|
|
- queryset = Rack.objects.select_related('site').prefetch_related('devices__device_type')\
|
|
|
- .annotate(device_count=Count('devices', distinct=True), u_consumed=Sum('devices__device_type__u_height'))
|
|
|
+ queryset = Rack.objects.select_related('site', 'group', 'tenant', 'role').prefetch_related('devices__device_type')\
|
|
|
+ .annotate(device_count=Count('devices', distinct=True),
|
|
|
+ u_consumed=Coalesce(Sum('devices__device_type__u_height'), 0))
|
|
|
filter = filters.RackFilter
|
|
|
filter_form = forms.RackFilterForm
|
|
|
table = tables.RackTable
|
|
@@ -559,8 +561,8 @@ class PlatformBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
|
|
#
|
|
|
|
|
|
class DeviceListView(ObjectListView):
|
|
|
- queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'rack__site', 'primary_ip4',
|
|
|
- 'primary_ip6')
|
|
|
+ queryset = Device.objects.select_related('device_type__manufacturer', 'device_role', 'tenant', 'rack__site',
|
|
|
+ 'primary_ip4', 'primary_ip6')
|
|
|
filter = filters.DeviceFilter
|
|
|
filter_form = forms.DeviceFilterForm
|
|
|
table = tables.DeviceTable
|