Ver Fonte

Add support for form fieldsets

Jeremy Stretch há 5 anos atrás
pai
commit
2a517cde9f

+ 44 - 5
netbox/templates/generic/object_edit.html

@@ -30,14 +30,53 @@
                     </div>
                     </div>
                 {% endif %}
                 {% endif %}
                 {% block form %}
                 {% block form %}
-                    <div class="panel panel-default">
-                        <div class="panel-heading"><strong>{{ obj_type|capfirst }}</strong></div>
+                  {% if form.Meta.fieldsets %}
+                    {# Render grouped fields accoring to Form #}
+                    {% for group, fields in form.Meta.fieldsets %}
+                      <div class="panel panel-default">
+                          <div class="panel-heading"><strong>{{ group }}</strong></div>
+                          <div class="panel-body">
+                            {% for name in fields %}
+                              {% render_field form|getfield:name %}
+                            {% endfor %}
+                          </div>
+                      </div>
+                    {% endfor %}
+                    {% if form.custom_fields %}
+                      <div class="panel panel-default">
+                        <div class="panel-heading"><strong>Custom Fields</strong></div>
                         <div class="panel-body">
                         <div class="panel-body">
-                            {% block form_fields %}
-                                {% render_form form %}
-                            {% endblock %}
+                          {% render_custom_fields form %}
                         </div>
                         </div>
+                      </div>
+                    {% endif %}
+                    {% if form.tags %}
+                      <div class="panel panel-default">
+                        <div class="panel-heading"><strong>Tags</strong></div>
+                        <div class="panel-body">
+                          {% render_field form.tags %}
+                        </div>
+                      </div>
+                    {% endif %}
+                    {% if form.comments %}
+                      <div class="panel panel-default">
+                        <div class="panel-heading"><strong>Comments</strong></div>
+                        <div class="panel-body">
+                          {% render_field form.comments %}
+                        </div>
+                      </div>
+                    {% endif %}
+                  {% else %}
+                    {# Render all fields in a single group #}
+                    <div class="panel panel-default">
+                      <div class="panel-heading"><strong>{{ obj_type|capfirst }}</strong></div>
+                      <div class="panel-body">
+                        {% block form_fields %}
+                          {% render_form form %}
+                        {% endblock %}
+                      </div>
                     </div>
                     </div>
+                  {% endif %}
                 {% endblock %}
                 {% endblock %}
             </div>
             </div>
         </div>
         </div>

+ 8 - 0
netbox/utilities/templatetags/form_helpers.py

@@ -4,6 +4,14 @@ from django import template
 register = template.Library()
 register = template.Library()
 
 
 
 
+@register.filter()
+def getfield(form, fieldname):
+    """
+    Return the specified field of a Form.
+    """
+    return form[fieldname]
+
+
 @register.inclusion_tag('utilities/render_field.html')
 @register.inclusion_tag('utilities/render_field.html')
 def render_field(field, bulk_nullable=False):
 def render_field(field, bulk_nullable=False):
     """
     """