From 7672ad74e9d11d3c05d936ef6a3724fa7e9d4d15 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 2 May 2025 11:07:48 -0700 Subject: [PATCH 1/3] 19380 call configure on embedded tables --- netbox/core/views.py | 1 + netbox/dcim/views.py | 3 +++ netbox/ipam/views.py | 9 +++++++++ netbox/virtualization/views.py | 1 + 4 files changed, 14 insertions(+) diff --git a/netbox/core/views.py b/netbox/core/views.py index 1264c6c1b57..ef52147f1f2 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -223,6 +223,7 @@ def get_extra_context(self, request, instance): data=related_changes[:50], orderable=False ) + related_changes_table.configure(request) objectchanges = ObjectChange.objects.valid_models().restrict(request.user, 'view').filter( changed_object_type=instance.changed_object_type, diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index faa9f6bb6ce..6707f7447fa 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2793,6 +2793,7 @@ def get_extra_context(self, request, instance): ), orderable=False ) + vdc_table.configure(request) # Get bridge interfaces bridge_interfaces = Interface.objects.restrict(request.user, 'view').filter(bridge=instance) @@ -2801,6 +2802,7 @@ def get_extra_context(self, request, instance): exclude=('device', 'parent'), orderable=False ) + bridge_interfaces_table.configure(request) # Get child interfaces child_interfaces = Interface.objects.restrict(request.user, 'view').filter(parent=instance) @@ -2809,6 +2811,7 @@ def get_extra_context(self, request, instance): exclude=('device', 'parent'), orderable=False ) + child_interfaces_table.configure(request) # Get assigned VLANs and annotate whether each is tagged or untagged vlans = [] diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 34ce6144f2a..919eb9f565b 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -45,10 +45,12 @@ def get_extra_context(self, request, instance): instance.import_targets.all(), orderable=False ) + import_targets_table.configure(request) export_targets_table = tables.RouteTargetTable( instance.export_targets.all(), orderable=False ) + export_targets_table.configure(request) return { 'related_models': self.get_related_models(request, instance, omit=[Interface, VMInterface]), @@ -530,6 +532,7 @@ def get_extra_context(self, request, instance): exclude=('vrf', 'utilization'), orderable=False ) + parent_prefix_table.configure(request) # Duplicate prefixes table duplicate_prefixes = Prefix.objects.restrict(request.user, 'view').filter( @@ -544,6 +547,7 @@ def get_extra_context(self, request, instance): exclude=('vrf', 'utilization'), orderable=False ) + duplicate_prefix_table.configure(request) return { 'aggregate': aggregate, @@ -709,6 +713,7 @@ def get_extra_context(self, request, instance): exclude=('vrf', 'utilization'), orderable=False ) + parent_prefixes_table.configure(request) return { 'parent_prefixes_table': parent_prefixes_table, @@ -796,6 +801,7 @@ def get_extra_context(self, request, instance): exclude=('vrf', 'utilization'), orderable=False ) + parent_prefixes_table.configure(request) # Duplicate IPs table duplicate_ips = IPAddress.objects.restrict(request.user, 'view').filter( @@ -811,6 +817,7 @@ def get_extra_context(self, request, instance): duplicate_ips = duplicate_ips.exclude(role=IPAddressRoleChoices.ROLE_ANYCAST) # Limit to a maximum of 10 duplicates displayed here duplicate_ips_table = tables.IPAddressTable(duplicate_ips[:10], orderable=False) + duplicate_ips_table.configure(request) return { 'parent_prefixes_table': parent_prefixes_table, @@ -1170,6 +1177,7 @@ def get_extra_context(self, request, instance): data=FHRPGroupAssignment.objects.restrict(request.user, 'view').filter(group=instance), orderable=False ) + members_table.configure(request) members_table.columns.hide('group') return { @@ -1289,6 +1297,7 @@ def get_extra_context(self, request, instance): 'vrf', 'scope', 'role', 'tenant' ) prefix_table = tables.PrefixTable(list(prefixes), exclude=('vlan', 'utilization'), orderable=False) + prefix_table.configure(request) return { 'prefix_table': prefix_table, diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index ba5a1128a15..01eda865f2b 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -505,6 +505,7 @@ def get_extra_context(self, request, instance): exclude=('virtual_machine',), orderable=False ) + child_interfaces_tables.configure(request) # Get VLAN translation rules vlan_translation_table = None From b20d2770d8065282a1fa2021eb2c22fead77e3f6 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 2 May 2025 11:31:29 -0700 Subject: [PATCH 2/3] 19380 call configure on embedded tables --- netbox/account/views.py | 1 + netbox/dcim/views.py | 2 ++ netbox/ipam/views.py | 4 ++++ netbox/netbox/views/misc.py | 1 + netbox/users/views.py | 1 + netbox/virtualization/views.py | 3 +++ netbox/vpn/views.py | 2 ++ 7 files changed, 14 insertions(+) diff --git a/netbox/account/views.py b/netbox/account/views.py index f28d5eff55d..a2f21b44edf 100644 --- a/netbox/account/views.py +++ b/netbox/account/views.py @@ -197,6 +197,7 @@ def get(self, request): 'changed_object_type' )[:20] changelog_table = ObjectChangeTable(changelog) + changelog_table.configure(request) return render(request, self.template_name, { 'changelog_table': changelog_table, diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 6707f7447fa..98223e3b0ab 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -2826,6 +2826,7 @@ def get_extra_context(self, request, instance): data=vlans, orderable=False ) + vlan_table.configure(request) # Get VLAN translation rules vlan_translation_table = None @@ -2834,6 +2835,7 @@ def get_extra_context(self, request, instance): data=instance.vlan_translation_policy.rules.all(), orderable=False ) + vlan_translation_table.configure(request) return { 'vdc_table': vdc_table, diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 919eb9f565b..8efa06191a6 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -46,6 +46,7 @@ def get_extra_context(self, request, instance): orderable=False ) import_targets_table.configure(request) + export_targets_table = tables.RouteTargetTable( instance.export_targets.all(), orderable=False @@ -895,6 +896,7 @@ def post(self, request): # Limit to 100 results addresses = filtersets.IPAddressFilterSet(request.POST, addresses).qs[:100] table = tables.IPAddressAssignTable(addresses) + table.configure(request) return render(request, 'ipam/ipaddress_assign.html', { 'form': form, @@ -1060,6 +1062,8 @@ def get_extra_context(self, request, instance): data=instance.rules.all(), orderable=False ) + vlan_translation_table.configure(request) + return { 'vlan_translation_table': vlan_translation_table, } diff --git a/netbox/netbox/views/misc.py b/netbox/netbox/views/misc.py index f28b0f7b155..0975fefbc25 100644 --- a/netbox/netbox/views/misc.py +++ b/netbox/netbox/views/misc.py @@ -100,6 +100,7 @@ def get(self, request): highlight = form.cleaned_data['q'] table = SearchTable(results, highlight=highlight) + table.configure(request) # Paginate the table results RequestConfig(request, { diff --git a/netbox/users/views.py b/netbox/users/views.py index cbddc9fdaf6..16dacaa46ec 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -77,6 +77,7 @@ class UserView(generic.ObjectView): def get_extra_context(self, request, instance): changelog = ObjectChange.objects.restrict(request.user, 'view').filter(user=instance)[:20] changelog_table = ObjectChangeTable(changelog) + changelog_table.configure(request) return { 'changelog_table': changelog_table, diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 01eda865f2b..bfb3382fe3f 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -350,6 +350,7 @@ def post(self, request, pk): selected_objects = Device.objects.filter(pk__in=form.initial['pk']) device_table = DeviceTable(list(selected_objects), orderable=False) + device_table.configure(request) return render(request, self.template_name, { 'form': form, @@ -514,6 +515,7 @@ def get_extra_context(self, request, instance): data=instance.vlan_translation_policy.rules.all(), orderable=False ) + vlan_translation_table.configure(request) # Get assigned VLANs and annotate whether each is tagged or untagged vlans = [] @@ -528,6 +530,7 @@ def get_extra_context(self, request, instance): data=vlans, orderable=False ) + vlan_table.configure(request) return { 'child_interfaces_table': child_interfaces_tables, diff --git a/netbox/vpn/views.py b/netbox/vpn/views.py index a729005a2a8..fa730225122 100644 --- a/netbox/vpn/views.py +++ b/netbox/vpn/views.py @@ -452,10 +452,12 @@ def get_extra_context(self, request, instance): instance.import_targets.prefetch_related('tenant'), orderable=False ) + import_targets_table.configure(request) export_targets_table = RouteTargetTable( instance.export_targets.prefetch_related('tenant'), orderable=False ) + export_targets_table.configure(request) return { 'import_targets_table': import_targets_table, From 52e9af926f2c3ed2ccf551c85ce833cc4a8db7ec Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 2 May 2025 13:09:07 -0700 Subject: [PATCH 3/3] 19380 call configure on embedded tables --- netbox/netbox/views/misc.py | 1 - 1 file changed, 1 deletion(-) diff --git a/netbox/netbox/views/misc.py b/netbox/netbox/views/misc.py index 0975fefbc25..f28b0f7b155 100644 --- a/netbox/netbox/views/misc.py +++ b/netbox/netbox/views/misc.py @@ -100,7 +100,6 @@ def get(self, request): highlight = form.cleaned_data['q'] table = SearchTable(results, highlight=highlight) - table.configure(request) # Paginate the table results RequestConfig(request, {