mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-10 18:39:36 -06:00
Enables filter modifiers on APISelect based fields
This commit is contained in:
parent
fba56d3704
commit
078231a46b
@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
|
||||
from netbox.registry import registry
|
||||
from utilities.forms.fields import ColorField, QueryField, TagFilterField
|
||||
from utilities.forms.widgets import FilterModifierWidget
|
||||
from utilities.forms.widgets.apiselect import APISelect
|
||||
from utilities.forms.widgets.modifiers import MODIFIER_EMPTY_FALSE, MODIFIER_EMPTY_TRUE
|
||||
|
||||
__all__ = (
|
||||
@ -211,9 +210,6 @@ class FilterModifierMixin:
|
||||
if isinstance(field, (forms.BooleanField, forms.NullBooleanField)):
|
||||
return []
|
||||
|
||||
if self._is_api_widget_field(field):
|
||||
return []
|
||||
|
||||
for field_class in field.__class__.__mro__:
|
||||
if field_class in FORM_FIELD_LOOKUPS:
|
||||
return FORM_FIELD_LOOKUPS[field_class]
|
||||
@ -234,15 +230,3 @@ class FilterModifierMixin:
|
||||
verified_lookups.append((lookup_code, lookup_label))
|
||||
|
||||
return verified_lookups
|
||||
|
||||
def _is_api_widget_field(self, field):
|
||||
"""Check if a field uses an API-based widget."""
|
||||
if isinstance(field.widget, APISelect):
|
||||
return True
|
||||
|
||||
if hasattr(field.widget, 'attrs') and field.widget.attrs:
|
||||
api_attrs = ['data-url', 'data-api-url', 'data-static-params']
|
||||
if any(attr in field.widget.attrs for attr in api_attrs):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@ -86,6 +86,10 @@ class FilterModifierWidget(forms.Widget):
|
||||
The JavaScript initializeFromURL() will set the correct modifier dropdown
|
||||
value based on URL parameters.
|
||||
"""
|
||||
# Propagate any attrs set on the wrapper (like data-url from get_bound_field)
|
||||
# to the original widget before rendering
|
||||
self.original_widget.attrs.update(self.attrs)
|
||||
|
||||
# Get context from the original widget
|
||||
original_context = self.original_widget.get_context(name, value, attrs)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user