소스 검색

Prefetch Tenant Group on user configurable tables

Prefetch the Tenant Group in views which allows its table to be configured
by the user. This decreases the amount of database queries that are required
to fetch the data.
Kim Johansson 4 년 전
부모
커밋
1539769c08
3개의 변경된 파일8개의 추가작업 그리고 8개의 파일을 삭제
  1. 3 3
      netbox/circuits/views.py
  2. 1 1
      netbox/dcim/views.py
  3. 4 4
      netbox/ipam/views.py

+ 3 - 3
netbox/circuits/views.py

@@ -30,7 +30,7 @@ class ProviderView(generic.ObjectView):
         circuits = Circuit.objects.restrict(request.user, 'view').filter(
             provider=instance
         ).prefetch_related(
-            'type', 'tenant', 'terminations__site'
+            'type', 'tenant', 'tenant__group', 'terminations__site'
         )
         circuits_table = tables.CircuitTable(circuits, user=request.user, exclude=('provider',))
         circuits_table.configure(request)
@@ -91,7 +91,7 @@ class ProviderNetworkView(generic.ObjectView):
             Q(termination_a__provider_network=instance.pk) |
             Q(termination_z__provider_network=instance.pk)
         ).prefetch_related(
-            'type', 'tenant', 'terminations__site'
+            'type', 'tenant', 'tenant__group', 'terminations__site'
         )
         circuits_table = tables.CircuitTable(circuits, user=request.user)
         circuits_table.configure(request)
@@ -192,7 +192,7 @@ class CircuitTypeBulkDeleteView(generic.BulkDeleteView):
 
 class CircuitListView(generic.ObjectListView):
     queryset = Circuit.objects.prefetch_related(
-        'provider', 'type', 'tenant', 'termination_a', 'termination_z'
+        'provider', 'type', 'tenant', 'tenant__group', 'termination_a', 'termination_z'
     )
     filterset = filtersets.CircuitFilterSet
     filterset_form = forms.CircuitFilterForm

+ 1 - 1
netbox/dcim/views.py

@@ -561,7 +561,7 @@ class RackRoleBulkDeleteView(generic.BulkDeleteView):
 
 class RackListView(generic.ObjectListView):
     queryset = Rack.objects.prefetch_related(
-        'site', 'location', 'tenant', 'role', 'devices__device_type'
+        'site', 'location', 'tenant', 'tenant_group', 'role', 'devices__device_type'
     ).annotate(
         device_count=count_related(Device, 'rack')
     )

+ 4 - 4
netbox/ipam/views.py

@@ -298,7 +298,7 @@ class AggregatePrefixesView(generic.ObjectChildrenView):
     def get_children(self, request, parent):
         return Prefix.objects.restrict(request.user, 'view').filter(
             prefix__net_contained_or_equal=str(parent.prefix)
-        ).prefetch_related('site', 'role', 'tenant', 'vlan')
+        ).prefetch_related('site', 'role', 'tenant', 'tenant__group', 'vlan')
 
     def prep_table_data(self, request, queryset, parent):
         # Determine whether to show assigned prefixes, available prefixes, or both
@@ -470,7 +470,7 @@ class PrefixPrefixesView(generic.ObjectChildrenView):
 
     def get_children(self, request, parent):
         return parent.get_child_prefixes().restrict(request.user, 'view').prefetch_related(
-            'site', 'vrf', 'vlan', 'role', 'tenant',
+            'site', 'vrf', 'vlan', 'role', 'tenant', 'tenant__group'
         )
 
     def prep_table_data(self, request, queryset, parent):
@@ -499,7 +499,7 @@ class PrefixIPRangesView(generic.ObjectChildrenView):
 
     def get_children(self, request, parent):
         return parent.get_child_ranges().restrict(request.user, 'view').prefetch_related(
-            'vrf', 'role', 'tenant',
+            'vrf', 'role', 'tenant', 'tenant__group',
         )
 
     def get_extra_context(self, request, instance):
@@ -587,7 +587,7 @@ class IPRangeIPAddressesView(generic.ObjectChildrenView):
 
     def get_children(self, request, parent):
         return parent.get_child_ips().restrict(request.user, 'view').prefetch_related(
-            'vrf', 'role', 'tenant',
+            'vrf', 'role', 'tenant', 'tenant__group',
         )
 
     def get_extra_context(self, request, instance):