mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Show graphs button only if there is at least one graph to display
This commit is contained in:
@ -2,6 +2,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin
|
|||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
|
|
||||||
|
from extras.models import Graph, GRAPH_TYPE_PROVIDER
|
||||||
from utilities.views import (
|
from utilities.views import (
|
||||||
BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
|
BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
|
||||||
)
|
)
|
||||||
@ -27,10 +28,12 @@ def provider(request, slug):
|
|||||||
|
|
||||||
provider = get_object_or_404(Provider, slug=slug)
|
provider = get_object_or_404(Provider, slug=slug)
|
||||||
circuits = Circuit.objects.filter(provider=provider).select_related('site', 'interface__device')
|
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', {
|
return render(request, 'circuits/provider.html', {
|
||||||
'provider': provider,
|
'provider': provider,
|
||||||
'circuits': circuits,
|
'circuits': circuits,
|
||||||
|
'show_graphs': show_graphs,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ from django.views.generic import View
|
|||||||
|
|
||||||
from ipam.models import Prefix, IPAddress, VLAN
|
from ipam.models import Prefix, IPAddress, VLAN
|
||||||
from circuits.models import Circuit
|
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.forms import ConfirmationForm
|
||||||
from utilities.views import (
|
from utilities.views import (
|
||||||
BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
|
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'))
|
rack_groups = RackGroup.objects.filter(site=site).annotate(rack_count=Count('racks'))
|
||||||
topology_maps = TopologyMap.objects.filter(site=site)
|
topology_maps = TopologyMap.objects.filter(site=site)
|
||||||
|
show_graphs = Graph.objects.filter(type=GRAPH_TYPE_SITE).exists()
|
||||||
|
|
||||||
return render(request, 'dcim/site.html', {
|
return render(request, 'dcim/site.html', {
|
||||||
'site': site,
|
'site': site,
|
||||||
'stats': stats,
|
'stats': stats,
|
||||||
'rack_groups': rack_groups,
|
'rack_groups': rack_groups,
|
||||||
'topology_maps': topology_maps,
|
'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)\
|
related_devices = Device.objects.filter(name__istartswith=base_name).exclude(pk=device.pk)\
|
||||||
.select_related('rack', 'device_type__manufacturer')[:10]
|
.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', {
|
return render(request, 'dcim/device.html', {
|
||||||
'device': device,
|
'device': device,
|
||||||
'console_ports': console_ports,
|
'console_ports': console_ports,
|
||||||
@ -597,6 +602,7 @@ def device(request, pk):
|
|||||||
'ip_addresses': ip_addresses,
|
'ip_addresses': ip_addresses,
|
||||||
'secrets': secrets,
|
'secrets': secrets,
|
||||||
'related_devices': related_devices,
|
'related_devices': related_devices,
|
||||||
|
'show_graphs': show_graphs,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,10 +26,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
|
{% 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">
|
<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>
|
<i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
|
||||||
Graphs
|
Graphs
|
||||||
</button>
|
</button>
|
||||||
|
{% endif %}
|
||||||
{% if perms.circuits.change_provider %}
|
{% if perms.circuits.change_provider %}
|
||||||
<a href="{% url 'circuits:provider_edit' slug=provider.slug %}" class="btn btn-warning">
|
<a href="{% url 'circuits:provider_edit' slug=provider.slug %}" class="btn btn-warning">
|
||||||
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
||||||
|
@ -34,11 +34,13 @@
|
|||||||
</td>
|
</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
|
{% if show_graphs %}
|
||||||
{% if iface.circuit or iface.connection %}
|
{% 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">
|
<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>
|
<i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{% if perms.dcim.change_interface %}
|
{% if perms.dcim.change_interface %}
|
||||||
{% if iface.is_physical %}
|
{% if iface.is_physical %}
|
||||||
{% if iface.connection %}
|
{% if iface.connection %}
|
||||||
|
@ -27,10 +27,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
|
{% 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">
|
<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>
|
<i class="glyphicon glyphicon-signal" aria-hidden="true"></i>
|
||||||
Graphs
|
Graphs
|
||||||
</button>
|
</button>
|
||||||
|
{% endif %}
|
||||||
{% if perms.dcim.change_site %}
|
{% if perms.dcim.change_site %}
|
||||||
<a href="{% url 'dcim:site_edit' slug=site.slug %}" class="btn btn-warning">
|
<a href="{% url 'dcim:site_edit' slug=site.slug %}" class="btn btn-warning">
|
||||||
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
||||||
|
Reference in New Issue
Block a user