mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 18:08:38 -06:00
Closes #11625: Add HTMX support to ObjectEditView
This commit is contained in:
parent
7accdd52d8
commit
e65b2a9fb3
@ -4,10 +4,11 @@
|
|||||||
|
|
||||||
### Enhancements
|
### Enhancements
|
||||||
|
|
||||||
* [#11517](https://github.com/netbox-community/netbox/issues/11517) - Standardize the inclusion of related objects across the entire UI
|
|
||||||
* [#11584](https://github.com/netbox-community/netbox/issues/11584) - Add a list view for contact assignments
|
|
||||||
* [#11254](https://github.com/netbox-community/netbox/issues/11254) - Introduce the `X-Request-ID` HTTP header to annotate the unique ID of each request for change logging
|
* [#11254](https://github.com/netbox-community/netbox/issues/11254) - Introduce the `X-Request-ID` HTTP header to annotate the unique ID of each request for change logging
|
||||||
* [#11440](https://github.com/netbox-community/netbox/issues/11440) - Add an `enabled` field for device type interfaces
|
* [#11440](https://github.com/netbox-community/netbox/issues/11440) - Add an `enabled` field for device type interfaces
|
||||||
|
* [#11517](https://github.com/netbox-community/netbox/issues/11517) - Standardize the inclusion of related objects across the entire UI
|
||||||
|
* [#11584](https://github.com/netbox-community/netbox/issues/11584) - Add a list view for contact assignments
|
||||||
|
* [#11625](https://github.com/netbox-community/netbox/issues/11625) - Add HTMX support to ObjectEditView
|
||||||
|
|
||||||
### Other Changes
|
### Other Changes
|
||||||
|
|
||||||
|
@ -218,6 +218,12 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView):
|
|||||||
form = self.form(instance=obj, initial=initial_data)
|
form = self.form(instance=obj, initial=initial_data)
|
||||||
restrict_form_fields(form, request.user)
|
restrict_form_fields(form, request.user)
|
||||||
|
|
||||||
|
# If this is an HTMX request, return only the rendered form HTML
|
||||||
|
if is_htmx(request):
|
||||||
|
return render(request, 'htmx/form.html', {
|
||||||
|
'form': form,
|
||||||
|
})
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
'model': model,
|
'model': model,
|
||||||
'object': obj,
|
'object': obj,
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
{% extends 'base/layout.html' %}
|
{% extends 'base/layout.html' %}
|
||||||
{% load form_helpers %}
|
|
||||||
{% load helpers %}
|
|
||||||
|
|
||||||
{% comment %}
|
{% comment %}
|
||||||
Blocks:
|
Blocks:
|
||||||
@ -48,56 +46,11 @@ Context:
|
|||||||
<form action="" method="post" enctype="multipart/form-data" class="form-object-edit mt-5">
|
<form action="" method="post" enctype="multipart/form-data" class="form-object-edit mt-5">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<div id="form_fields">
|
||||||
{% block form %}
|
{% block form %}
|
||||||
{% if form.fieldsets %}
|
{% include 'htmx/form.html' %}
|
||||||
|
|
||||||
{# Render hidden fields #}
|
|
||||||
{% for field in form.hidden_fields %}
|
|
||||||
{{ field }}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{# Render grouped fields according to Form #}
|
|
||||||
{% for group, fields in form.fieldsets %}
|
|
||||||
<div class="field-group mb-5">
|
|
||||||
{% if group %}
|
|
||||||
<div class="row mb-2">
|
|
||||||
<h5 class="offset-sm-3">{{ group }}</h5>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% for name in fields %}
|
|
||||||
{% with field=form|getfield:name %}
|
|
||||||
{% if not field.field.widget.is_hidden %}
|
|
||||||
{% render_field field %}
|
|
||||||
{% endif %}
|
|
||||||
{% endwith %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% 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 %}
|
|
||||||
|
|
||||||
{% if form.comments %}
|
|
||||||
<div class="field-group mb-5">
|
|
||||||
<h5 class="text-center">Comments</h5>
|
|
||||||
{% render_field form.comments %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% else %}
|
|
||||||
{# Render all fields in a single group #}
|
|
||||||
<div class="field-group mb-5">
|
|
||||||
{% render_form form %}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endblock form %}
|
{% endblock form %}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="text-end my-3">
|
<div class="text-end my-3">
|
||||||
{% block buttons %}
|
{% block buttons %}
|
||||||
|
51
netbox/templates/htmx/form.html
Normal file
51
netbox/templates/htmx/form.html
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{% load form_helpers %}
|
||||||
|
|
||||||
|
{% if form.fieldsets %}
|
||||||
|
|
||||||
|
{# Render hidden fields #}
|
||||||
|
{% for field in form.hidden_fields %}
|
||||||
|
{{ field }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{# Render grouped fields according to Form #}
|
||||||
|
{% for group, fields in form.fieldsets %}
|
||||||
|
<div class="field-group mb-5">
|
||||||
|
{% if group %}
|
||||||
|
<div class="row mb-2">
|
||||||
|
<h5 class="offset-sm-3">{{ group }}</h5>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% for name in fields %}
|
||||||
|
{% with field=form|getfield:name %}
|
||||||
|
{% if not field.field.widget.is_hidden %}
|
||||||
|
{% render_field field %}
|
||||||
|
{% endif %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% 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 %}
|
||||||
|
|
||||||
|
{% if form.comments %}
|
||||||
|
<div class="field-group mb-5">
|
||||||
|
<h5 class="text-center">Comments</h5>
|
||||||
|
{% render_field form.comments %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
{# Render all fields in a single group #}
|
||||||
|
<div class="field-group mb-5">
|
||||||
|
{% render_form form %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endif %}
|
Loading…
Reference in New Issue
Block a user