Merge pull request #18544 from renatoalmeidaoliveira/18154-make-BaseTable-aware-default_user_preferences-annon-users

FIX #18154 - Cannot change default table preferences for anonymous users
This commit is contained in:
bctiemann 2025-01-31 14:25:20 -05:00 committed by GitHub
commit 4c5fbb7326
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,6 +2,7 @@ from copy import deepcopy
from functools import cached_property from functools import cached_property
import django_tables2 as tables import django_tables2 as tables
from django.conf import settings
from django.contrib.auth.models import AnonymousUser from django.contrib.auth.models import AnonymousUser
from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericForeignKey
from django.core.exceptions import FieldDoesNotExist from django.core.exceptions import FieldDoesNotExist
@ -64,6 +65,8 @@ class BaseTable(tables.Table):
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.name}.columns") selected_columns = user.config.get(f"tables.{self.name}.columns")
elif isinstance(user, AnonymousUser) and hasattr(settings, 'DEFAULT_USER_PREFERENCES'):
selected_columns = settings.DEFAULT_USER_PREFERENCES.get('tables', {}).get(self.name, {}).get('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)