From f81f76f8621164e0c3d579b8d63d309ee0031a57 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Mon, 12 Feb 2024 16:00:19 -0600 Subject: [PATCH] Optimizations --- .../inc/table_header_filter_dropdown.html | 2 +- netbox/utilities/templatetags/form_helpers.py | 50 +++++++------------ 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/netbox/templates/inc/table_header_filter_dropdown.html b/netbox/templates/inc/table_header_filter_dropdown.html index d4b56f31c..a0db03015 100644 --- a/netbox/templates/inc/table_header_filter_dropdown.html +++ b/netbox/templates/inc/table_header_filter_dropdown.html @@ -5,7 +5,7 @@ {% endif %} \ No newline at end of file diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index f2b3f8b3f..5228fc9d3 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -59,45 +59,33 @@ def widget_type(field): # @register.inclusion_tag('form_helpers/render_field.html') -def render_field(field, bulk_nullable=False, label=None): +def render_field(field, bulk_nullable=False, label=None, table=None, request=None): """ Render a single form field from template """ - return { - 'field': field, - 'label': label or field.label, - 'bulk_nullable': bulk_nullable, - } - - -@register.inclusion_tag('form_helpers/render_field.html') -def render_filter_field(field, bulk_nullable=False, table=None, request=None): - """ - Render a single form field from template for use in column headers - """ url = "" - # Build kwargs for querystring function - kwargs = { - field.name: None - } + # Handle filter forms + if table: + # Build kwargs for querystring function + kwargs = {field.name: None} + # Build request url + if request and table.htmx_url: + url = table.htmx_url + querystring(request, **kwargs) + elif request: + url = querystring(request, **kwargs) + # Set HTMX args + if hasattr(field.field, 'widget'): + field.field.widget.attrs.update({ + 'hx-get': url if url else '#', + 'hx-push-url': "true", + 'hx-target': '#object_list', + 'hx-trigger': 'hidden.bs.dropdown from:closest .dropdown' + }) - # Build request url - if request and table.htmx_url: - url = table.htmx_url + querystring(request, **kwargs) - elif request: - url = querystring(request, **kwargs) - - if hasattr(field.field, 'widget'): - field.field.widget.attrs.update({ - 'hx-get': url if url else '#', - 'hx-push-url': "true", - 'hx-target': '#object_list', - 'hx-trigger': 'hidden.bs.dropdown from:closest .dropdown' - }) return { 'field': field, - 'label': None, + 'label': label or field.label if not table else None, 'bulk_nullable': bulk_nullable, }