diff --git a/netbox/utilities/forms/mixins.py b/netbox/utilities/forms/mixins.py index b6b3b7dac..9877845de 100644 --- a/netbox/utilities/forms/mixins.py +++ b/netbox/utilities/forms/mixins.py @@ -189,7 +189,7 @@ class FilterModifierMixin: if len(lookups) > 1: field.widget = FilterModifierWidget( - original_widget=field.widget, + widget=field.widget, lookups=lookups ) diff --git a/netbox/utilities/forms/widgets/modifiers.py b/netbox/utilities/forms/widgets/modifiers.py index dbe1e107b..d3d609734 100644 --- a/netbox/utilities/forms/widgets/modifiers.py +++ b/netbox/utilities/forms/widgets/modifiers.py @@ -18,16 +18,16 @@ class FilterModifierWidget(forms.Widget): """ template_name = 'widgets/filter_modifier.html' - def __init__(self, original_widget, lookups, attrs=None): + def __init__(self, widget, lookups, attrs=None): """ Args: - original_widget: The widget being wrapped (e.g., TextInput, NumberInput) + widget: The widget being wrapped (e.g., TextInput, NumberInput) lookups: List of (lookup_code, label) tuples (e.g., [('exact', 'Is'), ('ic', 'Contains')]) attrs: Additional widget attributes """ - self.original_widget = original_widget + self.original_widget = widget self.lookups = lookups - super().__init__(attrs or getattr(original_widget, 'attrs', {})) + super().__init__(attrs or getattr(widget, 'attrs', {})) def value_from_datadict(self, data, files, name): """ diff --git a/netbox/utilities/tests/test_filter_modifiers.py b/netbox/utilities/tests/test_filter_modifiers.py index 3d977b994..d45ac2ddb 100644 --- a/netbox/utilities/tests/test_filter_modifiers.py +++ b/netbox/utilities/tests/test_filter_modifiers.py @@ -21,7 +21,7 @@ class FilterModifierWidgetTest(TestCase): This is critical for form redisplay after validation errors. """ widget = FilterModifierWidget( - original_widget=forms.TextInput(), + widget=forms.TextInput(), lookups=[('exact', 'Is'), ('ic', 'Contains'), ('isw', 'Starts With')] ) data = QueryDict('serial__ic=test123') @@ -33,7 +33,7 @@ class FilterModifierWidgetTest(TestCase): def test_value_from_datadict_handles_exact_match(self): """Widget should detect exact match when field name has no modifier.""" widget = FilterModifierWidget( - original_widget=forms.TextInput(), + widget=forms.TextInput(), lookups=[('exact', 'Is'), ('ic', 'Contains')] ) data = QueryDict('serial=test456') @@ -45,7 +45,7 @@ class FilterModifierWidgetTest(TestCase): def test_value_from_datadict_returns_none_when_no_value(self): """Widget should return None when no data present to avoid appearing in changed_data.""" widget = FilterModifierWidget( - original_widget=forms.TextInput(), + widget=forms.TextInput(), lookups=[('exact', 'Is'), ('ic', 'Contains')] ) data = QueryDict('') @@ -57,7 +57,7 @@ class FilterModifierWidgetTest(TestCase): def test_get_context_includes_original_widget_and_lookups(self): """Widget context should include original widget context and lookup choices.""" widget = FilterModifierWidget( - original_widget=forms.TextInput(), + widget=forms.TextInput(), lookups=[('exact', 'Is'), ('ic', 'Contains'), ('isw', 'Starts With')] ) value = 'test' @@ -76,7 +76,7 @@ class FilterModifierWidgetTest(TestCase): def test_widget_renders_modifier_dropdown_and_input(self): """Widget should render modifier dropdown alongside original input.""" widget = FilterModifierWidget( - original_widget=forms.TextInput(), + widget=forms.TextInput(), lookups=[('exact', 'Is'), ('ic', 'Contains')] )