From 708d93c9e0dc4ef0ee724a6b8d564526e0d698de Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 18 Mar 2024 15:48:17 -0400 Subject: [PATCH] Use render_fieldset() for bulk edit & filter forms --- netbox/templates/account/preferences.html | 11 ++-------- netbox/templates/generic/bulk_edit.html | 21 +------------------ netbox/templates/inc/filter_list.html | 11 +--------- netbox/utilities/templatetags/form_helpers.py | 8 +++++-- 4 files changed, 10 insertions(+), 41 deletions(-) diff --git a/netbox/templates/account/preferences.html b/netbox/templates/account/preferences.html index 93ca5dfc2..c5a93c162 100644 --- a/netbox/templates/account/preferences.html +++ b/netbox/templates/account/preferences.html @@ -10,15 +10,8 @@ {% csrf_token %} {# Built-in preferences #} - {% for group, fields in form.fieldsets %} -
-
-
{{ group }}
-
- {% for name in fields %} - {% render_field form|getfield:name %} - {% endfor %} -
+ {% for fieldset in form.fieldsets %} + {% render_fieldset form fieldset %} {% endfor %} {# Plugin preferences #} diff --git a/netbox/templates/generic/bulk_edit.html b/netbox/templates/generic/bulk_edit.html index ebb0fbc0e..90b68b25b 100644 --- a/netbox/templates/generic/bulk_edit.html +++ b/netbox/templates/generic/bulk_edit.html @@ -50,26 +50,7 @@ Context: {# Render grouped fields according to declared fieldsets #} {% for fieldset in form.fieldsets %} -
-
-
- {% if fieldset.name %} - {{ fieldset.name }} - {% else %} - {{ model|meta:"verbose_name"|bettertitle }} - {% endif %} -
-
- {% for name in fieldset.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 %} -
+ {% render_fieldset form fieldset %} {% endfor %} {# Render tag add/remove fields #} diff --git a/netbox/templates/inc/filter_list.html b/netbox/templates/inc/filter_list.html index 407add929..b8c93ca4c 100644 --- a/netbox/templates/inc/filter_list.html +++ b/netbox/templates/inc/filter_list.html @@ -11,16 +11,7 @@ {# List filters by group #} {% for fieldset in filter_form.fieldsets %}
- {% if fieldset.name %} -
- {{ fieldset.name }} -
- {% endif %} - {% for name in fieldset.fields %} - {% with field=filter_form|get_item:name %} - {% render_field field %} - {% endwith %} - {% endfor %} + {% render_fieldset filter_form fieldset %}
{% empty %} {# List all non-customfield filters as declared in the form class #} diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index 5365e1c80..723c5206a 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -101,8 +101,12 @@ def render_fieldset(form, fieldset): # A single form field elif item in form.fields: + field = form[item] + # Annotate nullability for bulk editing + if field.name in getattr(form, 'nullable_fields', []): + field._nullable = True rows.append( - ('field', None, [form[item]]) + ('field', None, [field]) ) return { @@ -119,7 +123,7 @@ def render_field(field, bulk_nullable=False, label=None): return { 'field': field, 'label': label or field.label, - 'bulk_nullable': bulk_nullable, + 'bulk_nullable': bulk_nullable or getattr(field, '_nullable', False), }