feat: make site prefix column sortable

Clicking the Prefix column header sorts device and rack lists by site
name, which starts with the prefix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 11:10:29 +02:00
co-authored by Claude Opus 5.5
parent 337cd28c23
commit c7b65f123b
3 changed files with 11 additions and 2 deletions
+5 -1
View File
@@ -43,7 +43,7 @@ beziehungsweise dem globalen Mandantenfilter vorbelegt.
Ab Version `0.14.0` enthält das Plugin die Prefix-Spalte des bisherigen Ab Version `0.14.0` enthält das Plugin die Prefix-Spalte des bisherigen
Plugins NetBox Site Prefix. Geräte- und Rack-Listen lassen sich zusätzlich Plugins NetBox Site Prefix. Geräte- und Rack-Listen lassen sich zusätzlich
nach diesem Prefix filtern. nach diesem Prefix sortieren und filtern.
## Kompatibilität ## Kompatibilität
@@ -275,6 +275,10 @@ Datenspalte. Der Wert ist das erste Wort des Standortnamens, z. B. `Berlin`
für `Berlin Campus West` oder `DC01` für `DC01 Frankfurt`; ohne Standort für `Berlin Campus West` oder `DC01` für `DC01 Frankfurt`; ohne Standort
bleibt die Zelle leer. bleibt die Zelle leer.
Ein Klick auf die Spaltenüberschrift **Prefix** sortiert die Liste auf- bzw.
absteigend, wie bei **Name**. Sortiert wird nach dem Standortnamen, der mit
dem Prefix beginnt.
Hat ein Benutzer bereits eine eigene Spaltenauswahl gespeichert, hat diese Hat ein Benutzer bereits eine eigene Spaltenauswahl gespeichert, hat diese
Vorrang. Dann unter **Spalten konfigurieren** die Spalte **Prefix** auswählen Vorrang. Dann unter **Spalten konfigurieren** die Spalte **Prefix** auswählen
und nach vorne schieben oder die Tabellenkonfiguration zurücksetzen. und nach vorne schieben oder die Tabellenkonfiguration zurücksetzen.
+2 -1
View File
@@ -104,7 +104,8 @@ def install_site_prefix_column():
accessor=tables.A("site"), accessor=tables.A("site"),
verbose_name="Prefix", verbose_name="Prefix",
empty_values=(), empty_values=(),
orderable=False, # Der Standortname beginnt mit dem Prefix, sortiert also in derselben Reihenfolge.
order_by=("site__name",),
) )
register_table_column(column, COLUMN_NAME, DeviceTable, RackTable) register_table_column(column, COLUMN_NAME, DeviceTable, RackTable)
prepend_to_default_columns(DeviceTable) prepend_to_default_columns(DeviceTable)
@@ -74,5 +74,9 @@ class SitePrefixTest(SimpleTestCase):
self.assertIn(COLUMN_NAME, DeviceTable.base_columns) self.assertIn(COLUMN_NAME, DeviceTable.base_columns)
self.assertIn(COLUMN_NAME, RackTable.base_columns) self.assertIn(COLUMN_NAME, RackTable.base_columns)
for table in (DeviceTable, RackTable):
column = table.base_columns[COLUMN_NAME]
self.assertTrue(column.orderable)
self.assertEqual(tuple(column.order_by), ("site__name",))
self.assertEqual(DeviceTable.Meta.default_columns[:2], ("pk", COLUMN_NAME)) self.assertEqual(DeviceTable.Meta.default_columns[:2], ("pk", COLUMN_NAME))
self.assertEqual(RackTable.Meta.default_columns[:2], ("pk", COLUMN_NAME)) self.assertEqual(RackTable.Meta.default_columns[:2], ("pk", COLUMN_NAME))