فهرست منبع

Closes #8973: Display VLAN group count under site view

jeremystretch 3 سال پیش
والد
کامیت
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">