mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 04:22:01 -06:00
Introduce panel template for services
This commit is contained in:
parent
216d8d24b8
commit
f411c4f439
@ -295,27 +295,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="card">
|
{% include 'inc/panels/services.html' %}
|
||||||
<h5 class="card-header">Services</h5>
|
|
||||||
<div class="card-body">
|
|
||||||
{% if services %}
|
|
||||||
<table class="table table-hover">
|
|
||||||
{% for service in services %}
|
|
||||||
{% include 'ipam/inc/service.html' %}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-muted">None</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if perms.ipam.add_service %}
|
|
||||||
<div class="card-footer text-end noprint">
|
|
||||||
<a href="{% url 'ipam:service_add' %}?device={{ object.pk }}" class="btn btn-sm btn-primary">
|
|
||||||
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> Assign Service
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% include 'inc/panels/contacts.html' %}
|
{% include 'inc/panels/contacts.html' %}
|
||||||
{% include 'inc/panels/image_attachments.html' %}
|
{% include 'inc/panels/image_attachments.html' %}
|
||||||
{% if object.rack and object.position %}
|
{% if object.rack and object.position %}
|
||||||
|
50
netbox/templates/inc/panels/services.html
Normal file
50
netbox/templates/inc/panels/services.html
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<div class="card">
|
||||||
|
<h5 class="card-header">Services</h5>
|
||||||
|
<div class="card-body">
|
||||||
|
{% if services %}
|
||||||
|
<table class="table table-hover">
|
||||||
|
{% for service in services %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ service|linkify:"name" }}</td>
|
||||||
|
<td>{{ service.get_protocol_display }}</td>
|
||||||
|
<td>{{ service.port_list }}</td>
|
||||||
|
<td>
|
||||||
|
{% for ip in service.ipaddresses.all %}
|
||||||
|
<a href="{{ ip.get_absolute_url }}">{{ ip.address.ip }}</a><br />
|
||||||
|
{% empty %}
|
||||||
|
<span class="text-muted">All IPs</span>
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
<td>{{ service.description }}</td>
|
||||||
|
<td class="text-end noprint">
|
||||||
|
<a href="{% url 'ipam:service_changelog' pk=service.pk %}" class="btn btn-sm btn-outline-secondary" title="Change Log">
|
||||||
|
<i class="mdi mdi-history"></i>
|
||||||
|
</a>
|
||||||
|
{% if perms.ipam.change_service %}
|
||||||
|
<a href="{% url 'ipam:service_edit' pk=service.pk %}?return_url={{ service.parent.get_absolute_url }}" class="btn btn-warning btn-sm" title="Edit Service">
|
||||||
|
<i class="mdi mdi-pencil"></i>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if perms.ipam.delete_service %}
|
||||||
|
<a href="{% url 'ipam:service_delete' pk=service.pk %}?return_url={{ service.parent.get_absolute_url }}" class="btn btn-danger btn-sm">
|
||||||
|
<i class="mdi mdi-trash-can-outline" title="Delete Service"></i>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% else %}
|
||||||
|
<div class="text-muted">None</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% if perms.ipam.add_service %}
|
||||||
|
{% with object|meta:"model_name" as object_type %}
|
||||||
|
<div class="card-footer text-end noprint">
|
||||||
|
<a href="{% url 'ipam:service_add' %}{% if object_type == "device" %}?device={{ object.pk }}{% elif object_type == "virtualmachine" %}?virtual_machine={{ object.pk }}{% endif %}" class="btn btn-sm btn-primary">
|
||||||
|
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add Service
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{% endwith %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
@ -1,28 +0,0 @@
|
|||||||
<tr>
|
|
||||||
<td>{{ service|linkify:"name" }}</td>
|
|
||||||
<td>{{ service.get_protocol_display }}</td>
|
|
||||||
<td>{{ service.port_list }}</td>
|
|
||||||
<td>
|
|
||||||
{% for ip in service.ipaddresses.all %}
|
|
||||||
<a href="{{ ip.get_absolute_url }}">{{ ip.address.ip }}</a><br />
|
|
||||||
{% empty %}
|
|
||||||
<span class="text-muted">All IPs</span>
|
|
||||||
{% endfor %}
|
|
||||||
</td>
|
|
||||||
<td>{{ service.description }}</td>
|
|
||||||
<td class="text-end noprint">
|
|
||||||
<a href="{% url 'ipam:service_changelog' pk=service.pk %}" class="btn btn-sm btn-outline-secondary" title="Change Log">
|
|
||||||
<i class="mdi mdi-history"></i>
|
|
||||||
</a>
|
|
||||||
{% if perms.ipam.change_service %}
|
|
||||||
<a href="{% url 'ipam:service_edit' pk=service.pk %}?return_url={{ service.parent.get_absolute_url }}" class="btn btn-warning btn-sm" title="Edit Service">
|
|
||||||
<i class="mdi mdi-pencil"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if perms.ipam.delete_service %}
|
|
||||||
<a href="{% url 'ipam:service_delete' pk=service.pk %}?return_url={{ service.parent.get_absolute_url }}" class="btn btn-danger btn-sm">
|
|
||||||
<i class="mdi mdi-trash-can-outline" title="Delete Service"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
@ -138,24 +138,7 @@
|
|||||||
<div class="my-3">
|
<div class="my-3">
|
||||||
{% include 'inc/panel_table.html' with table=related_ips_table heading='Related IP Addresses' %}
|
{% include 'inc/panel_table.html' with table=related_ips_table heading='Related IP Addresses' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
{% include 'inc/panels/services.html' %}
|
||||||
<h5 class="card-header">
|
|
||||||
Services
|
|
||||||
</h5>
|
|
||||||
<div class="card-body">
|
|
||||||
{% if services %}
|
|
||||||
<table class="table table-hover">
|
|
||||||
{% for service in services %}
|
|
||||||
{% include 'ipam/inc/service.html' %}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-muted">
|
|
||||||
None
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% plugin_right_page object %}
|
{% plugin_right_page object %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -144,29 +144,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
{% include 'inc/panels/services.html' %}
|
||||||
<h5 class="card-header">
|
|
||||||
Services
|
|
||||||
</h5>
|
|
||||||
<div class="card-body">
|
|
||||||
{% if services %}
|
|
||||||
<table class="table table-hover">
|
|
||||||
{% for service in services %}
|
|
||||||
{% include 'ipam/inc/service.html' %}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
{% else %}
|
|
||||||
<span class="text-muted">None</span>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if perms.ipam.add_service %}
|
|
||||||
<div class="card-footer text-end noprint">
|
|
||||||
<a href="{% url 'ipam:service_add' %}?virtual_machine={{ object.pk }}" class="btn btn-sm btn-primary">
|
|
||||||
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> Assign Service
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% include 'inc/panels/contacts.html' %}
|
{% include 'inc/panels/contacts.html' %}
|
||||||
{% plugin_right_page object %}
|
{% plugin_right_page object %}
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user