Browse Source

Added stats to tenant view

Jeremy Stretch 8 years ago
parent
commit
e4960873f3
3 changed files with 45 additions and 5 deletions
  1. 36 3
      netbox/templates/tenancy/tenant.html
  2. 1 1
      netbox/tenancy/admin.py
  3. 8 1
      netbox/tenancy/views.py

+ 36 - 3
netbox/templates/tenancy/tenant.html

@@ -40,7 +40,7 @@
 </div>
 <h1>{{ tenant }}</h1>
 <div class="row">
-	<div class="col-md-6">
+	<div class="col-md-7">
         <div class="panel panel-default">
             <div class="panel-heading">
                 <strong>Tenant</strong>
@@ -72,8 +72,6 @@
                 </tr>
             </table>
         </div>
-	</div>
-	<div class="col-md-6">
         <div class="panel panel-default">
             <div class="panel-heading">
                 <strong>Comments</strong>
@@ -86,6 +84,41 @@
                 {% endif %}
             </div>
         </div>
+	</div>
+	<div class="col-md-5">
+        <div class="panel panel-default">
+            <div class="panel-heading">
+                <strong>Stats</strong>
+            </div>
+            <div class="row panel-body">
+                <div class="col-md-4 text-center">
+                    <h2><a href="{% url 'dcim:site_list' %}?tenant={{ tenant.slug }}" class="btn {% if tenant.site_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ tenant.site_count }}</a></h2>
+                    <p>Sites</p>
+                </div>
+                <div class="col-md-4 text-center">
+                    <h2><a href="{% url 'dcim:rack_list' %}?tenant={{ tenant.slug }}" class="btn {% if tenant.rack_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ tenant.rack_count }}</a></h2>
+                    <p>Racks</p>
+                </div>
+                <div class="col-md-4 text-center">
+                    <h2><a href="{% url 'dcim:device_list' %}?tenant={{ tenant.slug }}" class="btn {% if tenant.device_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ tenant.device_count }}</a></h2>
+                    <p>Devices</p>
+                </div>
+            </div>
+            <div class="row panel-body">
+                <div class="col-md-4 text-center">
+                    <h2><a href="{% url 'ipam:vrf_list' %}?tenant={{ tenant.slug }}" class="btn {% if tenant.vrf_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ tenant.vrf_count }}</a></h2>
+                    <p>VRFs</p>
+                </div>
+                <div class="col-md-4 text-center">
+                    <h2><a href="{% url 'ipam:vlan_list' %}?tenant={{ tenant.slug }}" class="btn {% if tenant.vlan_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ tenant.vlan_count }}</a></h2>
+                    <p>VLANs</p>
+                </div>
+                <div class="col-md-4 text-center">
+                    <h2><a href="{% url 'circuits:circuit_list' %}?tenant={{ tenant.slug }}" class="btn {% if tenant.circuit_count %}btn-primary{% else %}btn-default{% endif %} btn-lg">{{ tenant.circuit_count }}</a></h2>
+                    <p>Circuits</p>
+                </div>
+            </div>
+        </div>
     </div>
 </div>
 {% endblock %}

+ 1 - 1
netbox/tenancy/admin.py

@@ -16,7 +16,7 @@ class TenantAdmin(admin.ModelAdmin):
     prepopulated_fields = {
         'slug': ['name'],
     }
-    list_display = ['name', 'slug', 'group']
+    list_display = ['name', 'slug', 'group', 'description']
 
     def get_queryset(self, request):
         qs = super(TenantAdmin, self).get_queryset(request)

+ 8 - 1
netbox/tenancy/views.py

@@ -50,7 +50,14 @@ class TenantListView(ObjectListView):
 
 def tenant(request, slug):
 
-    tenant = get_object_or_404(Tenant, slug=slug)
+    tenant = get_object_or_404(Tenant.objects.annotate(
+        site_count=Count('sites', distinct=True),
+        rack_count=Count('racks', distinct=True),
+        device_count=Count('devices', distinct=True),
+        vrf_count=Count('vrfs', distinct=True),
+        vlan_count=Count('vlans', distinct=True),
+        circuit_count=Count('circuits', distinct=True),
+    ), slug=slug)
 
     return render(request, 'tenancy/tenant.html', {
         'tenant': tenant,