diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index 381670d89..d84e23525 100644 --- a/netbox/circuits/views.py +++ b/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, }) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index f0b3ce55a..f9d54f62b 100644 --- a/netbox/dcim/views.py +++ b/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, }) diff --git a/netbox/templates/circuits/provider.html b/netbox/templates/circuits/provider.html index 8ee2e0055..3edb3e02d 100644 --- a/netbox/templates/circuits/provider.html +++ b/netbox/templates/circuits/provider.html @@ -26,10 +26,12 @@