Closes #13400: Add 'name' property to BaseTable class

This commit is contained in:
Jeremy Stretch 2023-08-07 10:48:41 -04:00
parent 2236b86c35
commit f9648d8544

View File

@ -54,7 +54,7 @@ class BaseTable(tables.Table):
# 3. Meta.fields # 3. Meta.fields
selected_columns = None selected_columns = None
if user is not None and not isinstance(user, AnonymousUser): if user is not None and not isinstance(user, AnonymousUser):
selected_columns = user.config.get(f"tables.{self.__class__.__name__}.columns") selected_columns = user.config.get(f"tables.{self.name}.columns")
if not selected_columns: if not selected_columns:
selected_columns = getattr(self.Meta, 'default_columns', self.Meta.fields) selected_columns = getattr(self.Meta, 'default_columns', self.Meta.fields)
@ -113,6 +113,10 @@ class BaseTable(tables.Table):
columns.append((name, column.verbose_name)) columns.append((name, column.verbose_name))
return columns return columns
@property
def name(self):
return self.__class__.__name__
@property @property
def available_columns(self): def available_columns(self):
return self._get_columns(visible=False) return self._get_columns(visible=False)
@ -138,17 +142,16 @@ class BaseTable(tables.Table):
""" """
# Save ordering preference # Save ordering preference
if request.user.is_authenticated: if request.user.is_authenticated:
table_name = self.__class__.__name__
if self.prefixed_order_by_field in request.GET: if self.prefixed_order_by_field in request.GET:
if request.GET[self.prefixed_order_by_field]: if request.GET[self.prefixed_order_by_field]:
# If an ordering has been specified as a query parameter, save it as the # If an ordering has been specified as a query parameter, save it as the
# user's preferred ordering for this table. # user's preferred ordering for this table.
ordering = request.GET.getlist(self.prefixed_order_by_field) ordering = request.GET.getlist(self.prefixed_order_by_field)
request.user.config.set(f'tables.{table_name}.ordering', ordering, commit=True) request.user.config.set(f'tables.{self.name}.ordering', ordering, commit=True)
else: else:
# If the ordering has been set to none (empty), clear any existing preference. # If the ordering has been set to none (empty), clear any existing preference.
request.user.config.clear(f'tables.{table_name}.ordering', commit=True) request.user.config.clear(f'tables.{self.name}.ordering', commit=True)
elif ordering := request.user.config.get(f'tables.{table_name}.ordering'): elif ordering := request.user.config.get(f'tables.{self.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