Browse Source

Show graphs button only if there is at least one graph to display

Jeremy Stretch 8 years ago
parent
commit
bcb9ab7116

+ 3 - 0
netbox/circuits/views.py

@@ -2,6 +2,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.db.models import Count
 from django.shortcuts import get_object_or_404, render
 
+from extras.models import Graph, GRAPH_TYPE_PROVIDER
 from utilities.views import (
     BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
 )
@@ -27,10 +28,12 @@ def provider(request, slug):
 
     provider = get_object_or_404(Provider, slug=slug)
     circuits = Circuit.objects.filter(provider=provider).select_related('site', 'interface__device')
+    show_graphs = Graph.objects.filter(type=GRAPH_TYPE_PROVIDER).exists()
 
     return render(request, 'circuits/provider.html', {
         'provider': provider,
         'circuits': circuits,
+        'show_graphs': show_graphs,
     })
 
 

+ 7 - 1
netbox/dcim/views.py

@@ -15,7 +15,7 @@ from django.views.generic import View
 
 from ipam.models import Prefix, IPAddress, VLAN
 from circuits.models import Circuit
-from extras.models import TopologyMap
+from extras.models import Graph, TopologyMap, GRAPH_TYPE_INTERFACE
 from utilities.forms import ConfirmationForm
 from utilities.views import (
     BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
@@ -81,12 +81,14 @@ def site(request, slug):
     }
     rack_groups = RackGroup.objects.filter(site=site).annotate(rack_count=Count('racks'))
     topology_maps = TopologyMap.objects.filter(site=site)
+    show_graphs = Graph.objects.filter(type=GRAPH_TYPE_SITE).exists()
 
     return render(request, 'dcim/site.html', {
         'site': site,
         'stats': stats,
         'rack_groups': rack_groups,
         'topology_maps': topology_maps,
+        'show_graphs': show_graphs,
     })
 
 
@@ -585,6 +587,9 @@ def device(request, pk):
             related_devices = Device.objects.filter(name__istartswith=base_name).exclude(pk=device.pk)\
                 .select_related('rack', 'device_type__manufacturer')[:10]
 
+    # Show graph button on interfaces only if at least one graph has been created.
+    show_graphs = Graph.objects.filter(type=GRAPH_TYPE_INTERFACE).exists()
+
     return render(request, 'dcim/device.html', {
         'device': device,
         'console_ports': console_ports,
@@ -597,6 +602,7 @@ def device(request, pk):
         'ip_addresses': ip_addresses,
         'secrets': secrets,
         'related_devices': related_devices,
+        'show_graphs': show_graphs,
     })
 
 

+ 6 - 4
netbox/templates/circuits/provider.html

@@ -26,10 +26,12 @@
     </div>
 </div>
 <div class="pull-right">
-    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#graphs_modal" data-obj="{{ provider.name }}" data-url="{% url 'circuits-api:provider_graphs' pk=provider.pk %}" title="Show graphs">
-        <i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
-        Graphs
-    </button>
+    {% if show_graphs %}
+        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#graphs_modal" data-obj="{{ provider.name }}" data-url="{% url 'circuits-api:provider_graphs' pk=provider.pk %}" title="Show graphs">
+            <i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
+            Graphs
+        </button>
+    {% endif %}
     {% if perms.circuits.change_provider %}
 		<a href="{% url 'circuits:provider_edit' slug=provider.slug %}" class="btn btn-warning">
 			<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>

+ 6 - 4
netbox/templates/dcim/inc/_interface.html

@@ -34,10 +34,12 @@
         </td>
     {% endif %}
     <td class="text-right">
-        {% if iface.circuit or iface.connection %}
-            <button type="button" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#graphs_modal" data-obj="{{ device.name }} - {{ iface.name }}" data-url="{% url 'dcim-api:interface_graphs' pk=iface.pk %}" title="Show graphs">
-                <i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
-            </button>
+        {% if show_graphs %}
+            {% if iface.circuit or iface.connection %}
+                <button type="button" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#graphs_modal" data-obj="{{ device.name }} - {{ iface.name }}" data-url="{% url 'dcim-api:interface_graphs' pk=iface.pk %}" title="Show graphs">
+                    <i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
+                </button>
+            {% endif %}
         {% endif %}
         {% if perms.dcim.change_interface %}
             {% if iface.is_physical %}

+ 6 - 4
netbox/templates/dcim/site.html

@@ -27,10 +27,12 @@
     </div>
 </div>
 <div class="pull-right">
-    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#graphs_modal" data-obj="{{ site.name }}" data-url="{% url 'dcim-api:site_graphs' pk=site.pk %}" title="Show graphs">
-        <i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
-        Graphs
-    </button>
+    {% if show_graphs %}
+        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#graphs_modal" data-obj="{{ site.name }}" data-url="{% url 'dcim-api:site_graphs' pk=site.pk %}" title="Show graphs">
+            <i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
+            Graphs
+        </button>
+    {% endif %}
     {% if perms.dcim.change_site %}
 		<a href="{% url 'dcim:site_edit' slug=site.slug %}" class="btn btn-warning">
 			<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>