Explorar o código

Add prep_table_data() method to ObjectChildrenView

jeremystretch %!s(int64=4) %!d(string=hai) anos
pai
achega
c981b5cba0
Modificáronse 2 ficheiros con 15 adicións e 5 borrados
  1. 4 4
      netbox/ipam/views.py
  2. 11 1
      netbox/netbox/views/generic.py

+ 4 - 4
netbox/ipam/views.py

@@ -462,14 +462,14 @@ class PrefixPrefixesView(generic.ObjectChildrenView):
     template_name = 'ipam/prefix/prefixes.html'
     template_name = 'ipam/prefix/prefixes.html'
 
 
     def get_children(self, request, parent):
     def get_children(self, request, parent):
-        child_prefixes = parent.get_child_prefixes().restrict(request.user, 'view')
+        return parent.get_child_prefixes().restrict(request.user, 'view')
 
 
-        # Add available prefixes if requested
+    def prep_table_data(self, request, queryset, parent):
+        # Determine whether to show assigned prefixes, available prefixes, or both
         show_available = bool(request.GET.get('show_available', 'true') == 'true')
         show_available = bool(request.GET.get('show_available', 'true') == 'true')
         show_assigned = bool(request.GET.get('show_assigned', 'true') == 'true')
         show_assigned = bool(request.GET.get('show_assigned', 'true') == 'true')
-        child_prefixes = add_requested_prefixes(parent.prefix, child_prefixes, show_available, show_assigned)
 
 
-        return child_prefixes
+        return add_requested_prefixes(parent.prefix, queryset, show_available, show_assigned)
 
 
     def get_extra_context(self, request, instance):
     def get_extra_context(self, request, instance):
         return {
         return {

+ 11 - 1
netbox/netbox/views/generic.py

@@ -96,6 +96,16 @@ class ObjectChildrenView(ObjectView):
         """
         """
         raise NotImplementedError(f'{self.__class__.__name__} must implement get_children()')
         raise NotImplementedError(f'{self.__class__.__name__} must implement get_children()')
 
 
+    def prep_table_data(self, request, queryset, parent):
+        """
+        Provides a hook for subclassed views to modify data before initializing the table.
+
+        :param request: The current request
+        :param queryset: The filtered queryset of child objects
+        :param parent: The parent object
+        """
+        return queryset
+
     def get(self, request, *args, **kwargs):
     def get(self, request, *args, **kwargs):
         """
         """
         GET handler for rendering child objects.
         GET handler for rendering child objects.
@@ -111,7 +121,7 @@ class ObjectChildrenView(ObjectView):
             perm_name = get_permission_for_model(self.child_model, action)
             perm_name = get_permission_for_model(self.child_model, action)
             permissions[action] = request.user.has_perm(perm_name)
             permissions[action] = request.user.has_perm(perm_name)
 
 
-        table = self.table(child_objects, user=request.user)
+        table = self.table(self.prep_table_data(request, child_objects, instance), user=request.user)
         # Determine whether to display bulk action checkboxes
         # Determine whether to display bulk action checkboxes
         if 'pk' in table.base_columns and (permissions['change'] or permissions['delete']):
         if 'pk' in table.base_columns and (permissions['change'] or permissions['delete']):
             table.columns.show('pk')
             table.columns.show('pk')