diff --git a/netbox/extras/forms/model_forms.py b/netbox/extras/forms/model_forms.py index 1d44a0de2..c2bf64f59 100644 --- a/netbox/extras/forms/model_forms.py +++ b/netbox/extras/forms/model_forms.py @@ -310,6 +310,13 @@ class TableConfigForm(forms.ModelForm): label=_('Object type'), queryset=ObjectType.objects.all() ) + ordering = SimpleArrayField( + base_field=forms.CharField(), + label=_('Ordering'), + help_text=_( + "Enter a comma-separated list of column names. Prepend a name with a hyphen to reverse the order." + ) + ) available_columns = SimpleArrayField( base_field=forms.CharField(), required=False, @@ -326,14 +333,6 @@ class TableConfigForm(forms.ModelForm): label=_('Selected Columns') ) - fieldsets = ( - FieldSet( - 'name', 'slug', 'object_type', 'table', 'description', 'weight', 'enabled', 'shared', - name=_('Table Config') - ), - FieldSet('columns', 'ordering', name=_('Configuration')), - ) - class Meta: model = TableConfig exclude = ('user',) diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index b24a8045a..b16bc4194 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -599,6 +599,18 @@ class TableConfig(ChangeLoggedModel): def table_class(self): return get_table_for_model(self.object_type.model_class(), name=self.table) + @property + def ordering_items(self): + items = [] + for col in self.ordering or []: + if col.startswith('-'): + ascending = False + col = col[1:] + else: + ascending = True + items.append((col, ascending)) + return items + class ImageAttachment(ChangeLoggedModel): """ diff --git a/netbox/extras/views.py b/netbox/extras/views.py index b3ac0aee1..46a7863cb 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -353,6 +353,12 @@ class TableConfigListView(SharedObjectViewMixin, generic.ObjectListView): class TableConfigView(SharedObjectViewMixin, generic.ObjectView): queryset = TableConfig.objects.all() + def get_extra_context(self, request, instance): + table = instance.table_class([]) + return { + 'columns': dict(table.columns.items()), + } + @register_model_view(TableConfig, 'add', detail=False) @register_model_view(TableConfig, 'edit') diff --git a/netbox/templates/extras/tableconfig.html b/netbox/templates/extras/tableconfig.html index d8b4d0f30..a08b58ec9 100644 --- a/netbox/templates/extras/tableconfig.html +++ b/netbox/templates/extras/tableconfig.html @@ -47,24 +47,35 @@
-

{% trans "Columns" %}

-
-
    - {% for column in object.columns %} -
  • {{ column }}
  • - {% endfor %} -
-
+

{% trans "Columns Displayed" %}

+

{% trans "Ordering" %}

-
-
    - {% for column in object.ordering %} -
  • {{ column }}
  • - {% endfor %} -
-
+
{% plugin_right_page object %}