Просмотр исходного кода

Closes #8973: Display VLAN group count under site view

jeremystretch 4 лет назад
Родитель
Сommit
d93e944c07
3 измененных файлов с 19 добавлено и 1 удалено
  1. 4 0
      docs/release-notes/version-3.2.md
  2. 5 1
      netbox/dcim/views.py
  3. 10 0
      netbox/templates/dcim/site.html

+ 4 - 0
docs/release-notes/version-3.2.md

@@ -2,6 +2,10 @@
 
 
 ## v3.2.1 (FUTURE)
 ## v3.2.1 (FUTURE)
 
 
+### Enhancements
+
+* [#8973](https://github.com/netbox-community/netbox/issues/8973) - Display VLAN group count under site view
+
 ### Bug Fixes
 ### Bug Fixes
 
 
 * [#8931](https://github.com/netbox-community/netbox/issues/8931) - Copy assigned tenant when cloning a location
 * [#8931](https://github.com/netbox-community/netbox/issues/8931) - Copy assigned tenant when cloning a location

+ 5 - 1
netbox/dcim/views.py

@@ -14,7 +14,7 @@ from django.views.generic import View
 
 
 from circuits.models import Circuit
 from circuits.models import Circuit
 from extras.views import ObjectConfigContextView
 from extras.views import ObjectConfigContextView
-from ipam.models import ASN, IPAddress, Prefix, Service, VLAN
+from ipam.models import ASN, IPAddress, Prefix, Service, VLAN, VLANGroup
 from ipam.tables import AssignedIPAddressesTable, InterfaceVLANTable
 from ipam.tables import AssignedIPAddressesTable, InterfaceVLANTable
 from netbox.views import generic
 from netbox.views import generic
 from utilities.forms import ConfirmationForm
 from utilities.forms import ConfirmationForm
@@ -320,6 +320,10 @@ class SiteView(generic.ObjectView):
             'rack_count': Rack.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'rack_count': Rack.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'device_count': Device.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'device_count': Device.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'prefix_count': Prefix.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'prefix_count': Prefix.objects.restrict(request.user, 'view').filter(site=instance).count(),
+            'vlangroup_count': VLANGroup.objects.restrict(request.user, 'view').filter(
+                scope_type=ContentType.objects.get_for_model(Site),
+                scope_id=instance.pk
+            ).count(),
             'vlan_count': VLAN.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'vlan_count': VLAN.objects.restrict(request.user, 'view').filter(site=instance).count(),
             'circuit_count': Circuit.objects.restrict(request.user, 'view').filter(terminations__site=instance).count(),
             'circuit_count': Circuit.objects.restrict(request.user, 'view').filter(terminations__site=instance).count(),
             'vm_count': VirtualMachine.objects.restrict(request.user, 'view').filter(cluster__site=instance).count(),
             'vm_count': VirtualMachine.objects.restrict(request.user, 'view').filter(cluster__site=instance).count(),

+ 10 - 0
netbox/templates/dcim/site.html

@@ -188,6 +188,16 @@
                 {% endif %}
                 {% endif %}
               </td>
               </td>
             </tr>
             </tr>
+            <tr>
+              <th scope="row">VLAN Groups</th>
+              <td class="text-end">
+                {% if stats.vlangroup_count %}
+                  <a href="{% url 'ipam:vlangroup_list' %}?site={{ object.pk }}">{{ stats.vlangroup_count }}</a>
+                {% else %}
+                  {{ ''|placeholder }}
+                {% endif %}
+              </td>
+            </tr>
             <tr>
             <tr>
               <th scope="row">VLANs</th>
               <th scope="row">VLANs</th>
               <td class="text-end">
               <td class="text-end">