mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Merge branch 'feature' of https://github.com/netbox-community/netbox into feature
# Conflicts: # netbox/dcim/tables/template_code.py # netbox/netbox/forms.py # netbox/templates/dcim/cable_connect.html # netbox/templates/dcim/consoleport.html # netbox/templates/dcim/consoleserverport.html # netbox/templates/dcim/device.html # netbox/templates/dcim/device/base.html # netbox/templates/dcim/device_edit.html # netbox/templates/dcim/interface.html # netbox/templates/dcim/rack.html # netbox/templates/dcim/rack_edit.html # netbox/templates/dcim/site.html # netbox/templates/extras/configcontext.html # netbox/templates/extras/objectchange.html # netbox/templates/generic/object.html # netbox/templates/inc/nav_menu.html # netbox/templates/ipam/ipaddress_edit.html # netbox/templates/ipam/vrf.html # netbox/utilities/templates/buttons/export.html
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% render_field form.region %}
|
||||
{% render_field form.site_group %}
|
||||
{% render_field form.site %}
|
||||
{% render_field form.mark_connected %}
|
||||
</div>
|
||||
|
@@ -102,12 +102,12 @@
|
||||
<tr{% if cablepath.pk == path.pk %} class="info"{% endif %}>
|
||||
<td>
|
||||
<a href="?cablepath_id={{ cablepath.pk }}">
|
||||
{{ cablepath.origin.parent }} / {{ cablepath.origin }}
|
||||
{{ cablepath.origin.parent_object }} / {{ cablepath.origin }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if cablepath.destination %}
|
||||
{{ cablepath.destination }} ({{ cablepath.destination.parent }})
|
||||
{{ cablepath.destination }} ({{ cablepath.destination.parent_object }})
|
||||
{% else %}
|
||||
<span class="text-muted">Incomplete</span>
|
||||
{% endif %}
|
||||
|
@@ -29,6 +29,10 @@
|
||||
<th scope="row">Type</th>
|
||||
<td>{{ object.get_type_display }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Speed</th>
|
||||
<td>{{ object.get_speed_display }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Description</th>
|
||||
<td>{{ object.description|placeholder }}</td>
|
||||
|
@@ -29,6 +29,10 @@
|
||||
<th scope="row">Type</th>
|
||||
<td>{{ object.get_type_display }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td scope="row">Speed</td>
|
||||
<td>{{ object.get_speed_display|placeholder }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Description</th>
|
||||
<td>{{ object.description|placeholder }}</td>
|
||||
|
@@ -19,21 +19,41 @@
|
||||
<div class="card-body">
|
||||
<table class="table table-hover attr-table">
|
||||
<tr>
|
||||
<th scope="row">Site</th>
|
||||
<th scope="row">Region</th>
|
||||
<td>
|
||||
{% if object.site.region %}
|
||||
<a href="{{ object.site.region.get_absolute_url }}">{{ object.site.region }}</a> /
|
||||
{% for region in object.site.region.get_ancestors %}
|
||||
<a href="{{ region.get_absolute_url }}">{{ region }}</a> /
|
||||
{% endfor %}
|
||||
<a href="{{ object.site.region.get_absolute_url }}">{{ object.site.region }}</a>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
{% endif %}
|
||||
<a href="{{ object.site.get_absolute_url }}">{{ object.site }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Site</th>
|
||||
<td>
|
||||
<a href="{{ object.site.get_absolute_url }}">{{ object.site }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<th scope="row">Location</th>
|
||||
<td>
|
||||
{% if object.location %}
|
||||
{% for location in object.location.get_ancestors %}
|
||||
<a href="{{ location.get_absolute_url }}">{{ location }}</a> /
|
||||
{% endfor %}
|
||||
<a href="{{ object.location.get_absolute_url }}">{{ object.location }}</a>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Rack</th>
|
||||
<td>
|
||||
{% if object.rack %}
|
||||
{% if object.rack.group %}
|
||||
<a href="{{ object.rack.group.get_absolute_url }}">{{ object.rack.group }}</a> /
|
||||
{% endif %}
|
||||
<a href="{% url 'dcim:rack' pk=object.rack.pk %}">{{ object.rack }}</a>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
{% extends 'generic/object.html' %}
|
||||
{% load helpers %}
|
||||
{% load perms %}
|
||||
{% load custom_links %}
|
||||
{% load plugins %}
|
||||
|
||||
{% block title %}{{ object.device }} / {{ object }}{% endblock %}
|
||||
|
@@ -20,8 +20,9 @@
|
||||
<div class="field-group">
|
||||
<h4>Location</h4>
|
||||
{% render_field form.region %}
|
||||
{% render_field form.site_group %}
|
||||
{% render_field form.site %}
|
||||
{% render_field form.rack_group %}
|
||||
{% render_field form.location %}
|
||||
{% render_field form.rack %}
|
||||
{% if obj.device_type.is_child_device and obj.parent_bay %}
|
||||
<div class="form-group">
|
||||
|
@@ -1,12 +1,12 @@
|
||||
<td>
|
||||
{% if termination.parent.provider %}
|
||||
{% if termination.parent_object.provider %}
|
||||
<i class="mdi mdi-lightning-bolt" title="Circuit"></i>
|
||||
<a href="{{ termination.parent.get_absolute_url }}">
|
||||
{{ termination.parent.provider }}
|
||||
{{ termination.parent }}
|
||||
<a href="{{ termination.parent_object.get_absolute_url }}">
|
||||
{{ termination.parent_object.provider }}
|
||||
{{ termination.parent_object }}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ termination.parent.get_absolute_url }}">{{ termination.parent }}</a>
|
||||
<a href="{{ termination.parent_object.get_absolute_url }}">{{ termination.parent_object }}</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{% if path.destination_id %}
|
||||
{% with endpoint=path.destination %}
|
||||
<td><a href="{{ endpoint.parent.get_absolute_url }}">{{ endpoint.parent }}</a></td>
|
||||
<td><a href="{{ endpoint.parent_object.get_absolute_url }}">{{ endpoint.parent_object }}</a></td>
|
||||
<td><a href="{{ endpoint.get_absolute_url }}">{{ endpoint }}</a></td>
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
{% extends 'dcim/device_component.html' %}
|
||||
{% load helpers %}
|
||||
{% load plugins %}
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
@@ -253,7 +254,23 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{% include 'panel_table.html' with table=ipaddress_table heading="IP Addresses" %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong>IP Addresses</strong>
|
||||
</div>
|
||||
{% if ipaddress_table.rows %}
|
||||
{% render_table ipaddress_table 'inc/table.html' %}
|
||||
{% else %}
|
||||
<div class="panel-body text-muted">None</div>
|
||||
{% endif %}
|
||||
{% if perms.ipam.add_ipaddress %}
|
||||
<div class="panel-footer text-right noprint">
|
||||
<a href="{% url 'ipam:ipaddress_add' %}?device={{ object.device.pk }}&interface={{ object.pk }}" class="btn btn-xs btn-primary">
|
||||
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add IP Address
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
@@ -19,6 +19,7 @@
|
||||
{% render_field form.label %}
|
||||
{% render_field form.type %}
|
||||
{% render_field form.enabled %}
|
||||
{% render_field form.parent %}
|
||||
{% render_field form.lag %}
|
||||
{% render_field form.mac_address %}
|
||||
{% render_field form.mtu %}
|
||||
|
@@ -5,8 +5,8 @@
|
||||
{% block breadcrumbs %}
|
||||
<li><a href="{% url 'dcim:powerpanel_list' %}">Power Panels</a></li>
|
||||
<li><a href="{{ object.site.get_absolute_url }}">{{ object.site }}</a></li>
|
||||
{% if object.rack_group %}
|
||||
<li><a href="{{ object.rack_group.get_absolute_url }}">{{ object.rack_group }}</a></li>
|
||||
{% if object.location %}
|
||||
<li><a href="{{ object.location.get_absolute_url }}">{{ object.location }}</a></li>
|
||||
{% endif %}
|
||||
<li>{{ object }}</li>
|
||||
{% endblock %}
|
||||
@@ -26,10 +26,10 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Rack Group</td>
|
||||
<td>Location</td>
|
||||
<td>
|
||||
{% if object.rack_group %}
|
||||
<a href="{{ object.rack_group.get_absolute_url }}">{{ object.rack_group }}</a>
|
||||
{% if object.location %}
|
||||
<a href="{{ object.location.get_absolute_url }}">{{ object.location }}</a>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
{% endif %}
|
||||
|
@@ -65,7 +65,20 @@
|
||||
{% endif %}
|
||||
<a href="{{ object.site.get_absolute_url }}">{{ object.site }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Location</th>
|
||||
<td>
|
||||
{% if object.location %}
|
||||
{% for location in object.location.get_ancestors %}
|
||||
<a href="{{ location.get_absolute_url }}">{{ location }}</a> /
|
||||
{% endfor %}
|
||||
<a href="{{ object.location.get_absolute_url }}">{{ object.location }}</a>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Group</th>
|
||||
<td>
|
||||
|
@@ -5,8 +5,9 @@
|
||||
<div class="field-group">
|
||||
<h4>Rack</h4>
|
||||
{% render_field form.region %}
|
||||
{% render_field form.site_group %}
|
||||
{% render_field form.site %}
|
||||
{% render_field form.group %}
|
||||
{% render_field form.location %}
|
||||
{% render_field form.name %}
|
||||
{% render_field form.status %}
|
||||
{% render_field form.role %}
|
||||
|
@@ -200,30 +200,24 @@
|
||||
</div>
|
||||
<div class="card">
|
||||
<h5 class="card-header">
|
||||
Rack Groups
|
||||
Locations
|
||||
</h5>
|
||||
<div class='card-body'>
|
||||
<table class="table table-hover">
|
||||
{% for rg in rack_groups %}
|
||||
{% for location in locations %}
|
||||
<tr>
|
||||
<td style="padding-left: {{ rg.level }}8px"><i class="mdi mdi-folder-open"></i> <a href="{{ rg.get_absolute_url }}">{{ rg }}</a></td>
|
||||
<td>{{ rg.rack_count }}</td>
|
||||
<td class="text-right noprint">
|
||||
<a href="{% url 'dcim:rack_elevation_list' %}?group_id={{ rg.pk }}" class="btn btn-sm btn-primary" title="View elevations">
|
||||
<td style="padding-left: {{ location.level }}8px">
|
||||
<i class="mdi mdi-folder-open"></i>
|
||||
<a href="{{ location.get_absolute_url }}">{{ location }}</a>
|
||||
</td>
|
||||
<td>{{ location.rack_count }}</td>
|
||||
<td class="text-end noprint">
|
||||
<a href="{% url 'dcim:rack_elevation_list' %}?location_id={{ location.pk }}" class="btn btn-sm btn-primary" title="View Elevations">
|
||||
<i class="mdi mdi-server"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td><i class="mdi mdi-folder-open"></i> All racks</td>
|
||||
<td>{{ stats.rack_count }}</td>
|
||||
<td class="text-right noprint">
|
||||
<a href="{% url 'dcim:rack_elevation_list' %}?site={{ object.slug }}" class="btn btn-sm btn-primary" title="View elevations">
|
||||
<i class="mdi mdi-server"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -14,6 +14,7 @@
|
||||
<div class="panel-heading"><strong>Member Devices</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_field form.region %}
|
||||
{% render_field form.site_group %}
|
||||
{% render_field form.site %}
|
||||
{% render_field form.rack %}
|
||||
{% render_field form.members %}
|
||||
|
@@ -15,6 +15,7 @@
|
||||
<h5 class="card-header">Assignment</h5>
|
||||
<div class="card-body">
|
||||
{% render_field form.regions %}
|
||||
{% render_field form.site_groups %}
|
||||
{% render_field form.sites %}
|
||||
{% render_field form.roles %}
|
||||
{% render_field form.platforms %}
|
||||
|
32
netbox/templates/extras/object_journal.html
Normal file
32
netbox/templates/extras/object_journal.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{% extends base_template %}
|
||||
{% load form_helpers %}
|
||||
|
||||
{% block title %}{{ block.super }} - Journal{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if perms.extras.add_journalentry %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong>New Journal Entry</strong>
|
||||
</div>
|
||||
<form action="{% url 'extras:journalentry_add' %}" method="post" enctype="multipart/form-data" class="form form-horizontal">
|
||||
{% csrf_token %}
|
||||
{% for field in form.hidden_fields %}
|
||||
{{ field }}
|
||||
{% endfor %}
|
||||
<div class="row panel-body">
|
||||
<div class="col-md-10">
|
||||
{% render_field form.kind %}
|
||||
{% render_field form.comments %}
|
||||
</div>
|
||||
<div class="col-md-9 col-md-offset-3">
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
<a href="{{ object.get_absolute_url }}" class="btn btn-default">Cancel</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include 'panel_table.html' %}
|
||||
{% include 'inc/paginator.html' with paginator=table.paginator page=table.page %}
|
||||
{% endblock %}
|
@@ -86,8 +86,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h5 class="card-header">
|
||||
Difference
|
||||
<div class="card-header">
|
||||
<h5>Difference</h5>
|
||||
<div class="btn-group btn-group-xs pull-right noprint">
|
||||
<a {% if prev_change %}href="{% url 'extras:objectchange' pk=prev_change.pk %}"{% else %}disabled{% endif %} class="btn btn-default">
|
||||
<span class="mdi mdi-chevron-left" aria-hidden="true"></span> Previous
|
||||
@@ -96,7 +96,7 @@
|
||||
Next <span class="mdi mdi-chevron-right" aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if diff_added == diff_removed %}
|
||||
<span class="text-muted" style="margin-left: 10px;">
|
||||
@@ -115,17 +115,41 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<h5 class="card-header">
|
||||
Object Data
|
||||
Pre-Change Data
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<pre>{{ object.object_data|render_json }}</pre>
|
||||
{% if object.prechange_data %}
|
||||
<pre>{% for k, v in object.prechange_data.items %}{% spaceless %}
|
||||
<span{% if k in diff_removed %} style="background-color: #ffdce0"{% endif %}>{{ k }}: {{ v|render_json }}</span>
|
||||
{% endspaceless %}{% endfor %}
|
||||
</pre>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<h5 class="card-header">
|
||||
Post-Change Data
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
{% if object.postchange_data %}
|
||||
<pre>{% for k, v in object.postchange_data.items %}{% spaceless %}
|
||||
<span{% if k in diff_added %} style="background-color: #cdffd8"{% endif %}>{{ k }}: {{ v|render_json }}</span>
|
||||
{% endspaceless %}{% endfor %}
|
||||
</pre>
|
||||
{% else %}
|
||||
<span class="text-muted">None</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{% include 'panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %}
|
||||
|
@@ -41,13 +41,25 @@
|
||||
<li class="nav-item" role="presentation">
|
||||
<a class="nav-link{% if not active_tab %} active{% endif %}" href="{{ object.get_absolute_url }}">{{ object|meta:"verbose_name"|bettertitle }}</a>
|
||||
</li>
|
||||
{% if perms.extras.view_objectchange %}
|
||||
<li class="nav-item" role="presentation">
|
||||
{# TODO: Fix changelog URL resolution hack #}
|
||||
<a class="nav-link{% if active_tab == 'changelog' %} active{% endif %}" href="{{ object.get_absolute_url }}changelog/">Change Log</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% if perms.extras.view_journalentry %}
|
||||
{% with journal_viewname=object|viewname:'journal' %}
|
||||
{% url journal_viewname pk=object.pk as journal_url %}
|
||||
{% if journal_url %}
|
||||
<li role="presentation" class="nav-item">
|
||||
<a href="{{ journal_url }}" class="nav-link{% if active_tab == 'journal'%} active{% endif %}">Journal</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{% if perms.extras.view_objectchange %}
|
||||
{% with changelog_viewname=object|viewname:'changelog' %}
|
||||
{% url changelog_viewname pk=object.pk as changelog_url %}
|
||||
<li role="presentation" class="nav-item">
|
||||
<a href="{{ changelog_url }}" class="nav-link{% if active_tab == 'changelog'%} active{% endif %}">Change Log</a>
|
||||
</li>
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
@@ -45,9 +45,20 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li class="dropdown-item{% if not perms.dcim.view_sitegroup %} disabled{% endif %}">
|
||||
<a class="text-decoration-none" href="{% url 'dcim:sitegroup_list' %}">Site Groups</a>
|
||||
{% if perms.dcim.add_sitegroup %}
|
||||
<div class="btn-group btn-group-sm float-end">
|
||||
<a href="{% url 'dcim:sitegroup_add' %}" class="btn btn-sm btn-success" title="Add">
|
||||
<i class="bi bi-plus"></i>
|
||||
</a>
|
||||
<a href="{% url 'dcim:sitegroup_import' %}" class="btn btn-sm btn-info" title="Import">
|
||||
<i class="bi-download fs-6"></i>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
|
||||
<li class="dropdown-header">Racks</li>
|
||||
<li class="dropdown-item dropdown-item-btns {% if not perms.dcim.view_rack %}disabled{% endif %}">
|
||||
<a class="text-decoration-none" href="{% url 'dcim:rack_list' %}">Racks</a>
|
||||
@@ -63,14 +74,14 @@
|
||||
{% endif %}
|
||||
|
||||
</li>
|
||||
<li class="dropdown-item dropdown-item-btns {% if not perms.dcim.view_rackgroup %}disabled{% endif %}">
|
||||
<a class="text-decoration-none" href="{% url 'dcim:rackgroup_list' %}">Rack Groups</a>
|
||||
{% if perms.dcim.add_rackgroup %}
|
||||
<li class="dropdown-item dropdown-item-btns {% if not perms.dcim.view_location %}disabled{% endif %}">
|
||||
<a class="text-decoration-none" href="{% url 'dcim:location_list' %}">Locations</a>
|
||||
{% if perms.dcim.add_location %}
|
||||
<div class="btn-group btn-group-sm float-end">
|
||||
<a href="{% url 'dcim:rackgroup_add' %}" class="btn btn-sm btn-success" title="Add">
|
||||
<a href="{% url 'dcim:location_add' %}" class="btn btn-sm btn-success" title="Add">
|
||||
<i class="bi-plus fs-6"></i>
|
||||
</a>
|
||||
<a href="{% url 'dcim:rackgroup_import' %}" class="btn btn-sm btn-info" title="Import">
|
||||
<a href="{% url 'dcim:location_import' %}" class="btn btn-sm btn-info" title="Import">
|
||||
<i class="bi-download fs-6"></i>
|
||||
</a>
|
||||
</div>
|
||||
@@ -553,6 +564,9 @@
|
||||
<a a class="nav-link dropdown-toggle" href="#" id="other" role="button" data-bs-toggle="dropdown" aria-expanded="false">Other</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="dropdown-header">Logging</li>
|
||||
<li{% if not perms.extras.view_journalentry %} class="disabled"{% endif %}>
|
||||
<a href="{% url 'extras:journalentry_list' %}">Journal Entries</a>
|
||||
</li>
|
||||
<li{% if not perms.extras.view_objectchange %} class="disabled"{% endif %}>
|
||||
<a href="{% url 'extras:objectchange_list' %}">Change Log</a>
|
||||
</li>
|
||||
|
@@ -113,6 +113,7 @@
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="by_device" aria-labelledby="device_tab" role="tabpanel">
|
||||
{% render_field form.nat_region %}
|
||||
{% render_field form.nat_site_group %}
|
||||
{% render_field form.nat_site %}
|
||||
{% render_field form.nat_rack %}
|
||||
{% render_field form.nat_device %}
|
||||
|
57
netbox/templates/ipam/vlan_edit.html
Normal file
57
netbox/templates/ipam/vlan_edit.html
Normal file
@@ -0,0 +1,57 @@
|
||||
{% extends 'generic/object_edit.html' %}
|
||||
{% load static %}
|
||||
{% load form_helpers %}
|
||||
{% load helpers %}
|
||||
|
||||
{% block form %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>VLAN</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_field form.vid %}
|
||||
{% render_field form.name %}
|
||||
{% render_field form.status %}
|
||||
{% render_field form.role %}
|
||||
{% render_field form.description %}
|
||||
{% render_field form.tags %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>Tenancy</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_field form.tenant_group %}
|
||||
{% render_field form.tenant %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong>Assignment</strong>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% with site_tab_active=form.initial.site %}
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation"{% if not site_tab_active %} class="active"{% endif %}><a href="#group" role="tab" data-toggle="tab">VLAN Group</a></li>
|
||||
<li role="presentation"{% if site_tab_active %} class="active"{% endif %}><a href="#site" role="tab" data-toggle="tab">Site</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane{% if not vm_tab_active %} active{% endif %}" id="group">
|
||||
{% render_field form.scope_type %}
|
||||
{% render_field form.group %}
|
||||
</div>
|
||||
<div class="tab-pane{% if vm_tab_active %} active{% endif %}" id="site">
|
||||
{% render_field form.region %}
|
||||
{% render_field form.sitegroup %}
|
||||
{% render_field form.site %}
|
||||
</div>
|
||||
</div>
|
||||
{% endwith %}
|
||||
</div>
|
||||
</div>
|
||||
{% if form.custom_fields %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>Custom Fields</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_custom_fields form %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
49
netbox/templates/ipam/vlangroup_edit.html
Normal file
49
netbox/templates/ipam/vlangroup_edit.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{% extends 'generic/object_edit.html' %}
|
||||
{% load form_helpers %}
|
||||
{% load helpers %}
|
||||
|
||||
{% block form %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>VLAN Group</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_field form.name %}
|
||||
{% render_field form.slug %}
|
||||
{% render_field form.description %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong>Scope</strong>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% with virtual_tab_active=form.initial.cluster %}
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation"{% if not virtual_tab_active %} class="active"{% endif %}><a href="#physical" role="tab" data-toggle="tab">Physical</a></li>
|
||||
<li role="presentation"{% if virtual_tab_active %} class="active"{% endif %}><a href="#virtual" role="tab" data-toggle="tab">Virtual</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane{% if not virtual_tab_active %} active{% endif %}" id="physical">
|
||||
{% render_field form.region %}
|
||||
{% render_field form.site_group %}
|
||||
{% render_field form.site %}
|
||||
{% render_field form.location %}
|
||||
{% render_field form.rack %}
|
||||
</div>
|
||||
<div class="tab-pane{% if virtual_tab_active %} active{% endif %}" id="virtual">
|
||||
{% render_field form.cluster_group %}
|
||||
{% render_field form.cluster %}
|
||||
</div>
|
||||
</div>
|
||||
<span class="help-block">The VLAN group will be limited in scope to the most-specific object selected above.</span>
|
||||
{% endwith %}
|
||||
</div>
|
||||
</div>
|
||||
{% if form.custom_fields %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>Custom Fields</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_custom_fields form %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
@@ -30,11 +30,11 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Route Distinguisher</td>
|
||||
<th scope="row">Route Distinguisher</th>
|
||||
<td><code>{{ object.rd }}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tenant</td>
|
||||
<th scope="row">Tenant</th>
|
||||
<td>
|
||||
{% if object.tenant %}
|
||||
<a href="{{ object.tenant.get_absolute_url }}">{{ object.tenant }}</a>
|
||||
@@ -44,15 +44,21 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<th scope="row">Description</th>
|
||||
<td>{{ object.description|placeholder }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Prefixes</td>
|
||||
<th scope="row">Prefixes</th>
|
||||
<td>
|
||||
<a href="{% url 'ipam:prefix_list' %}?vrf_id={{ object.pk }}">{{ prefix_count }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">IP Addresses</th>
|
||||
<td>
|
||||
<a href="{% url 'ipam:ipaddress_list' %}?vrf_id={{ object.pk }}">{{ ipaddress_count }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
{% extends 'generic/object.html' %}
|
||||
{% load helpers %}
|
||||
{% load plugins %}
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block title %}{{ object.virtual_machine }} / {{ object.name }}{% endblock %}
|
||||
|
||||
@@ -56,16 +57,33 @@
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{% plugin_left_page object %}
|
||||
{% plugin_left_page object %}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
{% include 'inc/custom_fields_panel.html' %}
|
||||
{% include 'extras/inc/tags_panel.html' with tags=object.tags.all %}
|
||||
{% plugin_right_page object %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{% include 'panel_table.html' with table=ipaddress_table heading="IP Addresses" %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong>IP Addresses</strong>
|
||||
</div>
|
||||
{% if ipaddress_table.rows %}
|
||||
{% render_table ipaddress_table 'inc/table.html' %}
|
||||
{% else %}
|
||||
<div class="panel-body text-muted">None</div>
|
||||
{% endif %}
|
||||
{% if perms.ipam.add_ipaddress %}
|
||||
<div class="panel-footer text-right noprint">
|
||||
<a href="{% url 'ipam:ipaddress_add' %}?virtual_machine={{ object.virtual_machine.pk }}&vminterface={{ object.pk }}" class="btn btn-xs btn-primary">
|
||||
<span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add IP Address
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
@@ -31,6 +31,14 @@
|
||||
{% render_field form.tagged_vlans %}
|
||||
</div>
|
||||
</div>
|
||||
{% if form.custom_fields %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><strong>Custom Fields</strong></div>
|
||||
<div class="panel-body">
|
||||
{% render_custom_fields form %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block buttons %}
|
||||
|
Reference in New Issue
Block a user