Browse Source

Correct issue with filter_form not passing through render_table from django_tables2

Daniel Sheppard 1 năm trước cách đây
mục cha
commit
92c3bbc9db

+ 2 - 1
netbox/netbox/views/generic/bulk_views.py

@@ -180,8 +180,10 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
         # * Otherwise set to None
         # * Otherwise set to None
         if self.filterset_form:
         if self.filterset_form:
             filterset_form = self.filterset_form(request.GET)
             filterset_form = self.filterset_form(request.GET)
+            table.filterset_form = self.filterset_form(request.GET)
         else:
         else:
             filterset_form = None
             filterset_form = None
+            table.filterset_form = None
 
 
         # If this is an HTMX request, return only the rendered table HTML
         # If this is an HTMX request, return only the rendered table HTML
         if htmx_partial(request):
         if htmx_partial(request):
@@ -196,7 +198,6 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
                 'model': model,
                 'model': model,
                 'actions': actions,
                 'actions': actions,
             })
             })
-
         context = {
         context = {
             'model': model,
             'model': model,
             'table': table,
             'table': table,

+ 1 - 1
netbox/templates/generic/object_list.html

@@ -68,7 +68,7 @@ Context:
     <div class="tab-pane show active" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
     <div class="tab-pane show active" id="object-list" role="tabpanel" aria-labelledby="object-list-tab">
 
 
       {# Applied filters #}
       {# Applied filters #}
-      {% applied_filters model form_filter request.GET %}
+      {% applied_filters model filter_form request.GET %}
 
 
       {# Object table controls #}
       {# Object table controls #}
       {% include 'inc/table_controls_htmx.html' with table_modal="ObjectTable_config" %}
       {% include 'inc/table_controls_htmx.html' with table_modal="ObjectTable_config" %}

+ 1 - 1
netbox/templates/htmx/table.html

@@ -4,7 +4,7 @@
 {% load render_table from django_tables2 %}
 {% load render_table from django_tables2 %}
 
 
 {# OOB Swaps to update various components #}
 {# OOB Swaps to update various components #}
-{% applied_filters model form_filter request.GET %}
+{% applied_filters model filter_form request.GET %}
 
 
 <div class="htmx-container table-responsive">
 <div class="htmx-container table-responsive">
   {% with preferences|get_key:"pagination.placement" as paginator_placement %}
   {% with preferences|get_key:"pagination.placement" as paginator_placement %}

+ 1 - 1
netbox/templates/inc/table_htmx.html

@@ -21,7 +21,7 @@
                   ><i class="mdi mdi-close"></i></a>
                   ><i class="mdi mdi-close"></i></a>
                 </div>
                 </div>
               {% endif %}
               {% endif %}
-              {% render_table_filter_field form_field=filter_form|get_filter_field:column.name table=table request=request%}
+              {% render_table_filter_field column.name table request%}
               <a href="#"
               <a href="#"
                 hx-get="{{ table.htmx_url }}{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"
                 hx-get="{{ table.htmx_url }}{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"
                 {% if not table.embedded %}hx-push-url="true"{% endif %}
                 {% if not table.embedded %}hx-push-url="true"{% endif %}

+ 1 - 1
netbox/utilities/templates/form_helpers/render_table_filter_field.html

@@ -1,5 +1,5 @@
 {% load form_helpers %}
 {% load form_helpers %}
-{% if form_field %}
+{% if field %}
 <div class="column-filter dropdown">
 <div class="column-filter dropdown">
     <a href="#" class="dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside"><i class="mdi mdi-filter-settings"></i></a>
     <a href="#" class="dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside"><i class="mdi mdi-filter-settings"></i></a>
     <div class="dropdown-menu">
     <div class="dropdown-menu">

+ 11 - 2
netbox/utilities/templatetags/form_helpers.py

@@ -34,7 +34,6 @@ def getfield(form, fieldname):
 
 
 @register.filter()
 @register.filter()
 def get_filter_field(form, fieldname):
 def get_filter_field(form, fieldname):
-
     return getfield(form, f'{fieldname}') or getfield(form, f'{fieldname}_id')
     return getfield(form, f'{fieldname}') or getfield(form, f'{fieldname}_id')
 
 
 
 
@@ -127,11 +126,21 @@ def render_field(field, bulk_nullable=False, label=None):
 
 
 
 
 @register.inclusion_tag('form_helpers/render_table_filter_field.html')
 @register.inclusion_tag('form_helpers/render_table_filter_field.html')
-def render_table_filter_field(field, table, request):
+def render_table_filter_field(fieldname, table, request):
     """
     """
     Render a single form field for table column filters from template
     Render a single form field for table column filters from template
     """
     """
     url = ""
     url = ""
+    field = None
+
+    # Does this table have a filterset form?
+    if table.filterset_form is not None:
+        # Get the filterset field
+        field = get_filter_field(table.filterset_form, fieldname)
+
+    # Return if no filterset field
+    if field is None:
+        return {}
 
 
     # Handle filter forms
     # Handle filter forms
     if table:
     if table: