From 22af6dd05fc0d05bb01b0756a2aaab6327885ae9 Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Zaroubin Date: Thu, 30 Jan 2025 21:09:36 +0000 Subject: [PATCH 1/4] Add default user preferences tables testing in BaseTable --- netbox/netbox/tables/tables.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index f95263f6c..9523772b5 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -2,6 +2,7 @@ from copy import deepcopy from functools import cached_property import django_tables2 as tables +from django.conf import settings from django.contrib.auth.models import AnonymousUser from django.contrib.contenttypes.fields import GenericForeignKey from django.core.exceptions import FieldDoesNotExist @@ -13,6 +14,7 @@ from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from django_tables2.data import TableQuerysetData + from core.models import ObjectType from extras.choices import * from extras.models import CustomField, CustomLink @@ -64,6 +66,11 @@ class BaseTable(tables.Table): selected_columns = None if user is not None and not isinstance(user, AnonymousUser): selected_columns = user.config.get(f"tables.{self.name}.columns") + elif isinstance(user, AnonymousUser): + default_user_preferences = settings.DEFAULT_USER_PREFERENCES + default_table = default_user_preferences.get('tables', {}).get(self.name, {}).get('columns', {}) + if default_table != {}: + selected_columns = default_table if not selected_columns: selected_columns = getattr(self.Meta, 'default_columns', self.Meta.fields) From 62148bb83c5aa2dabdc3617d88759b7ea6ddc2c6 Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Zaroubin Date: Thu, 30 Jan 2025 21:51:37 +0000 Subject: [PATCH 2/4] Check if DEFAULT_USER_PREFERENCES are configured --- netbox/netbox/tables/tables.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 9523772b5..975411075 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -66,7 +66,7 @@ class BaseTable(tables.Table): selected_columns = None if user is not None and not isinstance(user, AnonymousUser): selected_columns = user.config.get(f"tables.{self.name}.columns") - elif isinstance(user, AnonymousUser): + elif isinstance(user, AnonymousUser) and hasattr(settings, 'DEFAULT_USER_PREFERENCES'): default_user_preferences = settings.DEFAULT_USER_PREFERENCES default_table = default_user_preferences.get('tables', {}).get(self.name, {}).get('columns', {}) if default_table != {}: From f5bdf7b593da5c35b6686f241fb72976471272fd Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Zaroubin Date: Fri, 31 Jan 2025 18:03:55 +0000 Subject: [PATCH 3/4] Simplify Anon user logic --- netbox/netbox/tables/tables.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 975411075..648881d3f 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -67,10 +67,7 @@ class BaseTable(tables.Table): if user is not None and not isinstance(user, AnonymousUser): selected_columns = user.config.get(f"tables.{self.name}.columns") elif isinstance(user, AnonymousUser) and hasattr(settings, 'DEFAULT_USER_PREFERENCES'): - default_user_preferences = settings.DEFAULT_USER_PREFERENCES - default_table = default_user_preferences.get('tables', {}).get(self.name, {}).get('columns', {}) - if default_table != {}: - selected_columns = default_table + selected_columns = settings.DEFAULT_USER_PREFERENCES.get('tables', {}).get(self.name, {}).get('columns') if not selected_columns: selected_columns = getattr(self.Meta, 'default_columns', self.Meta.fields) From 7d6089775e0982d6830acb1a5b535c508f8eece1 Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Zaroubin Date: Fri, 31 Jan 2025 18:48:50 +0000 Subject: [PATCH 4/4] remove extra line --- netbox/netbox/tables/tables.py | 1 - 1 file changed, 1 deletion(-) diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 648881d3f..2d2c430aa 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -14,7 +14,6 @@ from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from django_tables2.data import TableQuerysetData - from core.models import ObjectType from extras.choices import * from extras.models import CustomField, CustomLink