|
2 | 2 | from django.shortcuts import get_object_or_404
|
3 | 3 | from django.utils.translation import gettext as _
|
4 | 4 |
|
5 |
| -from circuits.models import Circuit |
6 |
| -from dcim.models import Cable, Device, Location, PowerFeed, Rack, RackReservation, Site, VirtualDeviceContext |
7 |
| -from ipam.models import Aggregate, ASN, IPAddress, IPRange, L2VPN, Prefix, VLAN, VRF |
8 | 5 | from netbox.views import generic
|
9 |
| -from utilities.utils import count_related |
| 6 | +from utilities.utils import count_related, get_related_models |
10 | 7 | from utilities.views import register_model_view, ViewTab
|
11 |
| -from virtualization.models import VirtualMachine, Cluster |
12 |
| -from wireless.models import WirelessLAN, WirelessLink |
13 | 8 | from . import filtersets, forms, tables
|
14 | 9 | from .models import *
|
15 | 10 |
|
@@ -132,32 +127,8 @@ class TenantView(generic.ObjectView):
|
132 | 127 |
|
133 | 128 | def get_extra_context(self, request, instance):
|
134 | 129 | related_models = [
|
135 |
| - # DCIM |
136 |
| - (Site.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
137 |
| - (Rack.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
138 |
| - (RackReservation.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
139 |
| - (Location.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
140 |
| - (Device.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
141 |
| - (VirtualDeviceContext.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
142 |
| - (Cable.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
143 |
| - (PowerFeed.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
144 |
| - # IPAM |
145 |
| - (VRF.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
146 |
| - (Aggregate.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
147 |
| - (Prefix.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
148 |
| - (IPRange.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
149 |
| - (IPAddress.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
150 |
| - (ASN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
151 |
| - (VLAN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
152 |
| - (L2VPN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
153 |
| - # Circuits |
154 |
| - (Circuit.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
155 |
| - # Virtualization |
156 |
| - (VirtualMachine.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
157 |
| - (Cluster.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
158 |
| - # Wireless |
159 |
| - (WirelessLAN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
160 |
| - (WirelessLink.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), |
| 130 | + (model.objects.restrict(request.user, 'view').filter(tenant=instance), f'{field}_id') |
| 131 | + for model, field in get_related_models(Tenant) |
161 | 132 | ]
|
162 | 133 |
|
163 | 134 | return {
|
|
0 commit comments