Refactor SplitMultiSelectWidget to use class attributes for widget classes

This commit is contained in:
Jason Novinger
2026-03-03 16:40:52 -06:00
parent 975910ace3
commit 7ef77a0ecf
+6 -16
View File
@@ -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: