Просмотр исходного кода

Improve preferences form rendering

jeremystretch 4 лет назад
Родитель
Сommit
7926225e9b
2 измененных файлов с 28 добавлено и 4 удалено
  1. 13 4
      netbox/templates/users/preferences.html
  2. 15 0
      netbox/users/forms.py

+ 13 - 4
netbox/templates/users/preferences.html

@@ -8,20 +8,29 @@
   <form method="post" action="" id="preferences-update">
     {% csrf_token %}
 
-    {% comment %}
     {% for group, fields in form.Meta.fieldsets %}
       <div class="field-group my-5">
         <div class="row mb-2">
           <h5 class="offset-sm-3">{{ group }}</h5>
         </div>
         {% for name in fields %}
-            {% render_field form|getfield:name %}
+          {% render_field form|getfield:name %}
         {% endfor %}
       </div>
     {% endfor %}
-    {% endcomment %}
 
-    {% render_form form %}
+    {% with plugin_fields=form.plugin_fields %}
+      {% if plugin_fields %}
+        <div class="field-group my-5">
+          <div class="row mb-2">
+            <h5 class="offset-sm-3">Plugins</h5>
+          </div>
+          {% for name in plugin_fields %}
+            {% render_field form|getfield:name %}
+          {% endfor %}
+        </div>
+      {% endif %}
+    {% endwith %}
 
     <div class="text-end my-3">
       <a class="btn btn-outline-secondary" href="{% url 'user:preferences' %}">Cancel</a>

+ 15 - 0
netbox/users/forms.py

@@ -44,6 +44,15 @@ class UserConfigForm(BootstrapMixin, forms.ModelForm, metaclass=UserConfigFormMe
     class Meta:
         model = UserConfig
         fields = ()
+        fieldsets = (
+            ('User Interface', (
+                'pagination.per_page',
+                'ui.colormode',
+            )),
+            ('Miscellaneous', (
+                'data_format',
+            )),
+        )
 
     def __init__(self, *args, instance=None, **kwargs):
 
@@ -61,6 +70,12 @@ class UserConfigForm(BootstrapMixin, forms.ModelForm, metaclass=UserConfigFormMe
 
         return super().save(*args, **kwargs)
 
+    @property
+    def plugin_fields(self):
+        return [
+            name for name in self.fields.keys() if name.startswith('plugins.')
+        ]
+
 
 class TokenForm(BootstrapMixin, forms.ModelForm):
     key = forms.CharField(