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

Fixes #12914: Clear stored ordering from user config when cleared by request

Jeremy Stretch 2 лет назад
Родитель
Сommit
7fc69f3945
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      netbox/netbox/tables/tables.py

+ 8 - 4
netbox/netbox/tables/tables.py

@@ -140,10 +140,14 @@ class BaseTable(tables.Table):
         if request.user.is_authenticated:
         if request.user.is_authenticated:
             table_name = self.__class__.__name__
             table_name = self.__class__.__name__
             if self.prefixed_order_by_field in request.GET:
             if self.prefixed_order_by_field in request.GET:
-                # If an ordering has been specified as a query parameter, save it as the
-                # user's preferred ordering for this table.
-                ordering = request.GET.getlist(self.prefixed_order_by_field)
-                request.user.config.set(f'tables.{table_name}.ordering', ordering, commit=True)
+                if request.GET[self.prefixed_order_by_field]:
+                    # If an ordering has been specified as a query parameter, save it as the
+                    # user's preferred ordering for this table.
+                    ordering = request.GET.getlist(self.prefixed_order_by_field)
+                    request.user.config.set(f'tables.{table_name}.ordering', ordering, commit=True)
+                else:
+                    # If the ordering has been set to none (empty), clear any existing preference.
+                    request.user.config.clear(f'tables.{table_name}.ordering', commit=True)
             elif ordering := request.user.config.get(f'tables.{table_name}.ordering'):
             elif ordering := request.user.config.get(f'tables.{table_name}.ordering'):
                 # If no ordering has been specified, set the preferred ordering (if any).
                 # If no ordering has been specified, set the preferred ordering (if any).
                 self.order_by = ordering
                 self.order_by = ordering