diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index a1e7a4473..64f866ccb 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -328,6 +328,11 @@ class PrefixListView(ObjectListView): edit_table_permissions = ['ipam.change_prefix', 'ipam.delete_prefix'] template_name = 'ipam/prefix_list.html' + def alter_queryset(self, request): + # Show only top-level prefixes by default + limit = None if request.GET.get('expand') else 0 + return self.queryset.annotate_depth(limit=limit) + def prefix(request, pk): diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index 8bd14ca28..da7a01abe 100644 --- a/netbox/utilities/views.py +++ b/netbox/utilities/views.py @@ -52,6 +52,9 @@ class ObjectListView(View): except AttributeError: pass + # Provide a hook to tweak the queryset based on the request immediately prior to rendering the object list + self.queryset = self.alter_queryset(request) + # Construct the table based on the user's permissions if any([request.user.has_perm(perm) for perm in self.edit_table_permissions]): table = self.edit_table(self.queryset) @@ -68,6 +71,9 @@ class ObjectListView(View): 'export_templates': export_templates, }) + def alter_queryset(self, request): + return self.queryset + class BulkImportView(View): form = None