Parcourir la source

Use render_fieldset() for bulk edit & filter forms

Jeremy Stretch il y a 1 an
Parent
commit
708d93c9e0

+ 2 - 9
netbox/templates/account/preferences.html

@@ -10,15 +10,8 @@
     {% csrf_token %}
 
     {# Built-in preferences #}
-    {% for group, fields in form.fieldsets %}
-      <div class="field-group my-5">
-        <div class="row">
-          <h5 class="col-9 offset-3">{{ group }}</h5>
-        </div>
-        {% for name in fields %}
-          {% render_field form|getfield:name %}
-        {% endfor %}
-      </div>
+    {% for fieldset in form.fieldsets %}
+      {% render_fieldset form fieldset %}
     {% endfor %}
 
     {# Plugin preferences #}

+ 1 - 20
netbox/templates/generic/bulk_edit.html

@@ -50,26 +50,7 @@ Context:
 
         {# Render grouped fields according to declared fieldsets #}
         {% for fieldset in form.fieldsets %}
-          <div class="field-group mb-5">
-            <div class="row">
-              <h5 class="col-9 offset-3">
-                {% if fieldset.name %}
-                  {{ fieldset.name }}
-                {% else %}
-                  {{ model|meta:"verbose_name"|bettertitle }}
-                {% endif %}
-              </h5>
-            </div>
-            {% 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 %}
-          </div>
+          {% render_fieldset form fieldset %}
         {% endfor %}
 
         {# Render tag add/remove fields #}

+ 1 - 10
netbox/templates/inc/filter_list.html

@@ -11,16 +11,7 @@
       {# List filters by group #}
       {% for fieldset in filter_form.fieldsets %}
         <div class="col col-12">
-          {% if fieldset.name %}
-            <div class="hr-text">
-              <span>{{ fieldset.name }}</span>
-            </div>
-          {% endif %}
-          {% for name in fieldset.fields %}
-            {% with field=filter_form|get_item:name %}
-              {% render_field field %}
-            {% endwith %}
-          {% endfor %}
+          {% render_fieldset filter_form fieldset %}
         </div>
       {% empty %}
         {# List all non-customfield filters as declared in the form class #}

+ 6 - 2
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),
     }