mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
142 lines
5.3 KiB
HTML
142 lines
5.3 KiB
HTML
{% extends 'base/layout.html' %}
|
|
{% load helpers %}
|
|
{% load form_helpers %}
|
|
{% load render_table from django_tables2 %}
|
|
|
|
{% comment %}
|
|
Context:
|
|
model: The model class of the objects being modified
|
|
form: The bulk edit form class
|
|
table: The table class for rendering list of objects being modified
|
|
return_url: The URL to which the user is redirected after submitting the form
|
|
{% endcomment %}
|
|
|
|
{% block title %}Editing {{ table.rows|length }} {{ model|meta:"verbose_name_plural"|bettertitle }}{% endblock %}
|
|
|
|
{% block tabs %}
|
|
<ul class="nav nav-tabs px-3">
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link active" id="edit-form-tab" data-bs-toggle="tab" data-bs-target="#edit-form" type="button" role="tab" aria-controls="edit-form" aria-selected="true">
|
|
Bulk Edit
|
|
</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="object-list-tab" data-bs-toggle="tab" data-bs-target="#object-list" type="button" role="tab" aria-controls="object-list" aria-selected="false">
|
|
Selected Objects
|
|
{% badge table.rows|length %}
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
{% endblock tabs %}
|
|
|
|
{% block content-wrapper %}
|
|
<div class="tab-content">
|
|
{% block content %}
|
|
|
|
{# Edit form #}
|
|
<div class="tab-pane show active" id="edit-form" role="tabpanel" aria-labelledby="edit-form-tab">
|
|
<form action="" method="post" class="form form-horizontal">
|
|
|
|
{% csrf_token %}
|
|
{% if request.POST.return_url %}
|
|
<input type="hidden" name="return_url" value="{{ request.POST.return_url }}" />
|
|
{% endif %}
|
|
{% for field in form.hidden_fields %}
|
|
{{ field }}
|
|
{% endfor %}
|
|
|
|
<div class="row">
|
|
<div class="col col-md-12 col-lg-10 offset-lg-1">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
{% if form.fieldsets %}
|
|
|
|
{# Render grouped fields according to declared fieldsets #}
|
|
{% for group, fields in form.fieldsets %}
|
|
<div class="field-group mb-5">
|
|
<div class="row mb-2">
|
|
<h5 class="offset-sm-3">
|
|
{% if group %}{{ group }}{% else %}{{ model|meta:"verbose_name"|bettertitle }}{% endif %}
|
|
</h5>
|
|
</div>
|
|
{% for name in fields %}
|
|
{% with field=form|getfield:name %}
|
|
{% if field.name in form.nullable_fields %}
|
|
{% render_field field bulk_nullable=True %}
|
|
{% else %}
|
|
{% render_field field %}
|
|
{% endif %}
|
|
{% endwith %}
|
|
{% endfor %}
|
|
</div>
|
|
{% endfor %}
|
|
|
|
{# Render tag add/remove fields #}
|
|
{% if form.add_tags and form.remove_tags %}
|
|
<div class="field-group mb-5">
|
|
<div class="row mb-2">
|
|
<h5 class="offset-sm-3">Tags</h5>
|
|
</div>
|
|
{% render_field form.add_tags %}
|
|
{% render_field form.remove_tags %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{# Render custom fields #}
|
|
{% if form.custom_fields %}
|
|
<div class="field-group mb-5">
|
|
<div class="row mb-2">
|
|
<h5 class="offset-sm-3">Custom Fields</h5>
|
|
</div>
|
|
{% render_custom_fields form %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{# Render comments #}
|
|
{% if form.comments %}
|
|
<div class="field-group mb-5">
|
|
<div class="row mb-2">
|
|
<h5 class="offset-sm-3">Comments</h5>
|
|
</div>
|
|
{% render_field form.comments bulk_nullable=True %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
|
|
{# Render all fields #}
|
|
{% for field in form.visible_fields %}
|
|
{% if field.name in form.nullable_fields %}
|
|
{% render_field field bulk_nullable=True %}
|
|
{% else %}
|
|
{% render_field field %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="text-end">
|
|
<button type="submit" name="_apply" class="btn btn-sm btn-primary">Apply</button>
|
|
<a href="{{ return_url }}" class="btn btn-sm btn-outline-danger">Cancel</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
</div>
|
|
|
|
{# Selected objects list #}
|
|
<div class="tab-pane" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
|
|
<div class="card">
|
|
<div class="card-body table-responsive">
|
|
{% render_table table 'inc/table.html' %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock content %}
|
|
</div>
|
|
{% endblock content-wrapper %}
|