From de41d0d3ae911c3a1194bdcc18cc524e557c575b Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Tue, 3 Mar 2026 16:40:52 -0600 Subject: [PATCH] Refactor SplitMultiSelectWidget to use class attributes for widget classes --- netbox/utilities/forms/widgets/select.py | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/netbox/utilities/forms/widgets/select.py b/netbox/utilities/forms/widgets/select.py index 0d700b13f..cd4e01215 100644 --- a/netbox/utilities/forms/widgets/select.py +++ b/netbox/utilities/forms/widgets/select.py @@ -151,14 +151,16 @@ class SplitMultiSelectWidget(forms.MultiWidget): be enabled only if the order of the selected choices is significant. """ template_name = 'widgets/splitmultiselect.html' + available_widget_class = AvailableOptions + selected_widget_class = SelectedOptions def __init__(self, choices, attrs=None, ordering=False): widgets = [ - AvailableOptions( + self.available_widget_class( attrs={'size': 8}, choices=choices ), - SelectedOptions( + self.selected_widget_class( attrs={'size': 8, 'class': 'select-all'}, choices=choices ), @@ -220,20 +222,8 @@ class ObjectTypeSplitMultiSelectWidget(SplitMultiSelectWidget): SplitMultiSelectWidget that adds data-model-key attributes to options. Used by ObjectPermissionForm to enable JS show/hide of custom actions. """ - - def __init__(self, choices, attrs=None, ordering=False): - widgets = [ - ObjectTypeAvailableOptions( - attrs={'size': 8}, - choices=choices - ), - ObjectTypeSelectedOptions( - attrs={'size': 8, 'class': 'select-all'}, - choices=choices - ), - ] - forms.MultiWidget.__init__(self, widgets, attrs) - self.ordering = ordering + available_widget_class = ObjectTypeAvailableOptions + selected_widget_class = ObjectTypeSelectedOptions def set_model_key_map(self, pk_to_model_key): for widget in self.widgets: