#6372: Refactor Select2 naming

This commit is contained in:
checktheroads 2021-07-17 21:24:20 -07:00
parent 29ee3e5ac0
commit c14b546d5f
14 changed files with 193 additions and 193 deletions

View File

@ -11,7 +11,7 @@ from tenancy.models import Tenant
from utilities.forms import ( from utilities.forms import (
add_blank_choice, BootstrapMixin, CommentField, CSVChoiceField, CSVModelChoiceField, DatePicker, add_blank_choice, BootstrapMixin, CommentField, CSVChoiceField, CSVModelChoiceField, DatePicker,
DynamicModelChoiceField, DynamicModelMultipleChoiceField, SelectSpeedWidget, SmallTextarea, SlugField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SelectSpeedWidget, SmallTextarea, SlugField,
StaticSelect2, StaticSelect2Multiple, TagFilterField, StaticSelect, StaticSelectMultiple, TagFilterField,
) )
from .choices import CircuitStatusChoices from .choices import CircuitStatusChoices
from .models import * from .models import *
@ -274,7 +274,7 @@ class CircuitForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
'commit_rate': "Committed rate", 'commit_rate': "Committed rate",
} }
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
'install_date': DatePicker(), 'install_date': DatePicker(),
'commit_rate': SelectSpeedWidget(), 'commit_rate': SelectSpeedWidget(),
} }
@ -327,7 +327,7 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul
choices=add_blank_choice(CircuitStatusChoices), choices=add_blank_choice(CircuitStatusChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
tenant = DynamicModelChoiceField( tenant = DynamicModelChoiceField(
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
@ -386,7 +386,7 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=CircuitStatusChoices, choices=CircuitStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),

View File

@ -25,7 +25,7 @@ from utilities.forms import (
APISelect, APISelectMultiple, add_blank_choice, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, APISelect, APISelectMultiple, add_blank_choice, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect,
ColorField, CommentField, CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, CSVTypedChoiceField, ColorField, CommentField, CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, CSVTypedChoiceField,
DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableNameField, form_from_model, JSONField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableNameField, form_from_model, JSONField,
NumericArrayField, SelectWithPK, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple, TagFilterField, NumericArrayField, SelectWithPK, SmallTextarea, SlugField, StaticSelect, StaticSelectMultiple, TagFilterField,
BOOLEAN_WITH_BLANK_CHOICES, BOOLEAN_WITH_BLANK_CHOICES,
) )
from virtualization.models import Cluster, ClusterGroup from virtualization.models import Cluster, ClusterGroup
@ -304,7 +304,7 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
time_zone = TimeZoneFormField( time_zone = TimeZoneFormField(
choices=add_blank_choice(TimeZoneFormField().choices), choices=add_blank_choice(TimeZoneFormField().choices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
comments = CommentField() comments = CommentField()
tags = DynamicModelMultipleChoiceField( tags = DynamicModelMultipleChoiceField(
@ -340,8 +340,8 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
'rows': 3, 'rows': 3,
} }
), ),
'status': StaticSelect2(), 'status': StaticSelect(),
'time_zone': StaticSelect2(), 'time_zone': StaticSelect(),
} }
help_texts = { help_texts = {
'name': "Full name of the site", 'name': "Full name of the site",
@ -404,7 +404,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
choices=add_blank_choice(SiteStatusChoices), choices=add_blank_choice(SiteStatusChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
region = DynamicModelChoiceField( region = DynamicModelChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
@ -431,7 +431,7 @@ class SiteBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
time_zone = TimeZoneFormField( time_zone = TimeZoneFormField(
choices=add_blank_choice(TimeZoneFormField().choices), choices=add_blank_choice(TimeZoneFormField().choices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
class Meta: class Meta:
@ -451,7 +451,7 @@ class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=SiteStatusChoices, choices=SiteStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
@ -679,10 +679,10 @@ class RackForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
'u_height': "Height in rack units", 'u_height': "Height in rack units",
} }
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
'type': StaticSelect2(), 'type': StaticSelect(),
'width': StaticSelect2(), 'width': StaticSelect(),
'outer_unit': StaticSelect2(), 'outer_unit': StaticSelect(),
} }
@ -787,7 +787,7 @@ class RackBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
choices=add_blank_choice(RackStatusChoices), choices=add_blank_choice(RackStatusChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
role = DynamicModelChoiceField( role = DynamicModelChoiceField(
queryset=RackRole.objects.all(), queryset=RackRole.objects.all(),
@ -805,12 +805,12 @@ class RackBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(RackTypeChoices), choices=add_blank_choice(RackTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
width = forms.ChoiceField( width = forms.ChoiceField(
choices=add_blank_choice(RackWidthChoices), choices=add_blank_choice(RackWidthChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
u_height = forms.IntegerField( u_height = forms.IntegerField(
required=False, required=False,
@ -832,7 +832,7 @@ class RackBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
outer_unit = forms.ChoiceField( outer_unit = forms.ChoiceField(
choices=add_blank_choice(RackDimensionUnitChoices), choices=add_blank_choice(RackDimensionUnitChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
comments = CommentField( comments = CommentField(
widget=SmallTextarea, widget=SmallTextarea,
@ -878,17 +878,17 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=RackStatusChoices, choices=RackStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=RackTypeChoices, choices=RackTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
width = forms.MultipleChoiceField( width = forms.MultipleChoiceField(
choices=RackWidthChoices, choices=RackWidthChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
role_id = DynamicModelMultipleChoiceField( role_id = DynamicModelMultipleChoiceField(
queryset=RackRole.objects.all(), queryset=RackRole.objects.all(),
@ -970,7 +970,7 @@ class RackReservationForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=User.objects.order_by( queryset=User.objects.order_by(
'username' 'username'
), ),
widget=StaticSelect2() widget=StaticSelect()
) )
tags = DynamicModelMultipleChoiceField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(), queryset=Tag.objects.all(),
@ -1049,7 +1049,7 @@ class RackReservationBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomField
'username' 'username'
), ),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
tenant = DynamicModelChoiceField( tenant = DynamicModelChoiceField(
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
@ -1166,7 +1166,7 @@ class DeviceTypeForm(BootstrapMixin, CustomFieldModelForm):
('Images', ('front_image', 'rear_image')), ('Images', ('front_image', 'rear_image')),
) )
widgets = { widgets = {
'subdevice_role': StaticSelect2(), 'subdevice_role': StaticSelect(),
'front_image': forms.ClearableFileInput(attrs={ 'front_image': forms.ClearableFileInput(attrs={
'accept': DEVICETYPE_IMAGE_FORMATS 'accept': DEVICETYPE_IMAGE_FORMATS
}), }),
@ -1230,47 +1230,47 @@ class DeviceTypeFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
subdevice_role = forms.MultipleChoiceField( subdevice_role = forms.MultipleChoiceField(
choices=add_blank_choice(SubdeviceRoleChoices), choices=add_blank_choice(SubdeviceRoleChoices),
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
console_ports = forms.NullBooleanField( console_ports = forms.NullBooleanField(
required=False, required=False,
label='Has console ports', label='Has console ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
console_server_ports = forms.NullBooleanField( console_server_ports = forms.NullBooleanField(
required=False, required=False,
label='Has console server ports', label='Has console server ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
power_ports = forms.NullBooleanField( power_ports = forms.NullBooleanField(
required=False, required=False,
label='Has power ports', label='Has power ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
power_outlets = forms.NullBooleanField( power_outlets = forms.NullBooleanField(
required=False, required=False,
label='Has power outlets', label='Has power outlets',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
interfaces = forms.NullBooleanField( interfaces = forms.NullBooleanField(
required=False, required=False,
label='Has interfaces', label='Has interfaces',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
pass_through_ports = forms.NullBooleanField( pass_through_ports = forms.NullBooleanField(
required=False, required=False,
label='Has pass-through ports', label='Has pass-through ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -1318,7 +1318,7 @@ class ConsolePortTemplateForm(BootstrapMixin, forms.ModelForm):
class ConsolePortTemplateCreateForm(ComponentTemplateCreateForm): class ConsolePortTemplateCreateForm(ComponentTemplateCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(ConsolePortTypeChoices), choices=add_blank_choice(ConsolePortTypeChoices),
widget=StaticSelect2() widget=StaticSelect()
) )
field_order = ('manufacturer', 'device_type', 'name_pattern', 'label_pattern', 'type', 'description') field_order = ('manufacturer', 'device_type', 'name_pattern', 'label_pattern', 'type', 'description')
@ -1335,7 +1335,7 @@ class ConsolePortTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(ConsolePortTypeChoices), choices=add_blank_choice(ConsolePortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
class Meta: class Meta:
@ -1357,7 +1357,7 @@ class ConsoleServerPortTemplateForm(BootstrapMixin, forms.ModelForm):
class ConsoleServerPortTemplateCreateForm(ComponentTemplateCreateForm): class ConsoleServerPortTemplateCreateForm(ComponentTemplateCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(ConsolePortTypeChoices), choices=add_blank_choice(ConsolePortTypeChoices),
widget=StaticSelect2() widget=StaticSelect()
) )
field_order = ('manufacturer', 'device_type', 'name_pattern', 'label_pattern', 'type', 'description') field_order = ('manufacturer', 'device_type', 'name_pattern', 'label_pattern', 'type', 'description')
@ -1374,7 +1374,7 @@ class ConsoleServerPortTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(ConsolePortTypeChoices), choices=add_blank_choice(ConsolePortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
description = forms.CharField( description = forms.CharField(
required=False required=False
@ -1429,7 +1429,7 @@ class PowerPortTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PowerPortTypeChoices), choices=add_blank_choice(PowerPortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
maximum_draw = forms.IntegerField( maximum_draw = forms.IntegerField(
min_value=1, min_value=1,
@ -1483,7 +1483,7 @@ class PowerOutletTemplateCreateForm(ComponentTemplateCreateForm):
feed_leg = forms.ChoiceField( feed_leg = forms.ChoiceField(
choices=add_blank_choice(PowerOutletFeedLegChoices), choices=add_blank_choice(PowerOutletFeedLegChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
field_order = ( field_order = (
'manufacturer', 'device_type', 'name_pattern', 'label_pattern', 'type', 'power_port', 'feed_leg', 'manufacturer', 'device_type', 'name_pattern', 'label_pattern', 'type', 'power_port', 'feed_leg',
@ -1520,7 +1520,7 @@ class PowerOutletTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PowerOutletTypeChoices), choices=add_blank_choice(PowerOutletTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
power_port = forms.ModelChoiceField( power_port = forms.ModelChoiceField(
queryset=PowerPortTemplate.objects.all(), queryset=PowerPortTemplate.objects.all(),
@ -1529,7 +1529,7 @@ class PowerOutletTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
feed_leg = forms.ChoiceField( feed_leg = forms.ChoiceField(
choices=add_blank_choice(PowerOutletFeedLegChoices), choices=add_blank_choice(PowerOutletFeedLegChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
description = forms.CharField( description = forms.CharField(
required=False required=False
@ -1559,14 +1559,14 @@ class InterfaceTemplateForm(BootstrapMixin, forms.ModelForm):
] ]
widgets = { widgets = {
'device_type': forms.HiddenInput(), 'device_type': forms.HiddenInput(),
'type': StaticSelect2(), 'type': StaticSelect(),
} }
class InterfaceTemplateCreateForm(ComponentTemplateCreateForm): class InterfaceTemplateCreateForm(ComponentTemplateCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=InterfaceTypeChoices, choices=InterfaceTypeChoices,
widget=StaticSelect2() widget=StaticSelect()
) )
mgmt_only = forms.BooleanField( mgmt_only = forms.BooleanField(
required=False, required=False,
@ -1587,7 +1587,7 @@ class InterfaceTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(InterfaceTypeChoices), choices=add_blank_choice(InterfaceTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
mgmt_only = forms.NullBooleanField( mgmt_only = forms.NullBooleanField(
required=False, required=False,
@ -1611,7 +1611,7 @@ class FrontPortTemplateForm(BootstrapMixin, forms.ModelForm):
] ]
widgets = { widgets = {
'device_type': forms.HiddenInput(), 'device_type': forms.HiddenInput(),
'rear_port': StaticSelect2(), 'rear_port': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -1628,7 +1628,7 @@ class FrontPortTemplateForm(BootstrapMixin, forms.ModelForm):
class FrontPortTemplateCreateForm(ComponentTemplateCreateForm): class FrontPortTemplateCreateForm(ComponentTemplateCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
widget=StaticSelect2() widget=StaticSelect()
) )
rear_port_set = forms.MultipleChoiceField( rear_port_set = forms.MultipleChoiceField(
choices=[], choices=[],
@ -1698,7 +1698,7 @@ class FrontPortTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PortTypeChoices), choices=add_blank_choice(PortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
color = ColorField( color = ColorField(
required=False required=False
@ -1720,14 +1720,14 @@ class RearPortTemplateForm(BootstrapMixin, forms.ModelForm):
] ]
widgets = { widgets = {
'device_type': forms.HiddenInput(), 'device_type': forms.HiddenInput(),
'type': StaticSelect2(), 'type': StaticSelect(),
} }
class RearPortTemplateCreateForm(ComponentTemplateCreateForm): class RearPortTemplateCreateForm(ComponentTemplateCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
widget=StaticSelect2(), widget=StaticSelect(),
) )
color = ColorField( color = ColorField(
required=False required=False
@ -1755,7 +1755,7 @@ class RearPortTemplateBulkEditForm(BootstrapMixin, BulkEditForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PortTypeChoices), choices=add_blank_choice(PortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
color = ColorField( color = ColorField(
required=False required=False
@ -2142,10 +2142,10 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
"config context", "config context",
} }
widgets = { widgets = {
'face': StaticSelect2(), 'face': StaticSelect(),
'status': StaticSelect2(), 'status': StaticSelect(),
'primary_ip4': StaticSelect2(), 'primary_ip4': StaticSelect(),
'primary_ip6': StaticSelect2(), 'primary_ip6': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -2405,7 +2405,7 @@ class DeviceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk
status = forms.ChoiceField( status = forms.ChoiceField(
choices=add_blank_choice(DeviceStatusChoices), choices=add_blank_choice(DeviceStatusChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
serial = forms.CharField( serial = forms.CharField(
max_length=50, max_length=50,
@ -2491,7 +2491,7 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=DeviceStatusChoices, choices=DeviceStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
asset_tag = forms.CharField( asset_tag = forms.CharField(
required=False required=False
@ -2503,56 +2503,56 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
has_primary_ip = forms.NullBooleanField( has_primary_ip = forms.NullBooleanField(
required=False, required=False,
label='Has a primary IP', label='Has a primary IP',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
virtual_chassis_member = forms.NullBooleanField( virtual_chassis_member = forms.NullBooleanField(
required=False, required=False,
label='Virtual chassis member', label='Virtual chassis member',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
console_ports = forms.NullBooleanField( console_ports = forms.NullBooleanField(
required=False, required=False,
label='Has console ports', label='Has console ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
console_server_ports = forms.NullBooleanField( console_server_ports = forms.NullBooleanField(
required=False, required=False,
label='Has console server ports', label='Has console server ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
power_ports = forms.NullBooleanField( power_ports = forms.NullBooleanField(
required=False, required=False,
label='Has power ports', label='Has power ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
power_outlets = forms.NullBooleanField( power_outlets = forms.NullBooleanField(
required=False, required=False,
label='Has power outlets', label='Has power outlets',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
interfaces = forms.NullBooleanField( interfaces = forms.NullBooleanField(
required=False, required=False,
label='Has interfaces', label='Has interfaces',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
pass_through_ports = forms.NullBooleanField( pass_through_ports = forms.NullBooleanField(
required=False, required=False,
label='Has pass-through ports', label='Has pass-through ports',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -2611,12 +2611,12 @@ class ConsolePortFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=ConsolePortTypeChoices, choices=ConsolePortTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
speed = forms.MultipleChoiceField( speed = forms.MultipleChoiceField(
choices=ConsolePortSpeedChoices, choices=ConsolePortSpeedChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
tag = TagFilterField(model) tag = TagFilterField(model)
@ -2642,12 +2642,12 @@ class ConsolePortCreateForm(ComponentCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(ConsolePortTypeChoices), choices=add_blank_choice(ConsolePortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
speed = forms.ChoiceField( speed = forms.ChoiceField(
choices=add_blank_choice(ConsolePortSpeedChoices), choices=add_blank_choice(ConsolePortSpeedChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
field_order = ('device', 'name_pattern', 'label_pattern', 'type', 'speed', 'mark_connected', 'description', 'tags') field_order = ('device', 'name_pattern', 'label_pattern', 'type', 'speed', 'mark_connected', 'description', 'tags')
@ -2718,12 +2718,12 @@ class ConsoleServerPortFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=ConsolePortTypeChoices, choices=ConsolePortTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
speed = forms.MultipleChoiceField( speed = forms.MultipleChoiceField(
choices=ConsolePortSpeedChoices, choices=ConsolePortSpeedChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
tag = TagFilterField(model) tag = TagFilterField(model)
@ -2749,12 +2749,12 @@ class ConsoleServerPortCreateForm(ComponentCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(ConsolePortTypeChoices), choices=add_blank_choice(ConsolePortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
speed = forms.ChoiceField( speed = forms.ChoiceField(
choices=add_blank_choice(ConsolePortSpeedChoices), choices=add_blank_choice(ConsolePortSpeedChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
field_order = ('device', 'name_pattern', 'label_pattern', 'type', 'speed', 'mark_connected', 'description', 'tags') field_order = ('device', 'name_pattern', 'label_pattern', 'type', 'speed', 'mark_connected', 'description', 'tags')
@ -2824,7 +2824,7 @@ class PowerPortFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PowerPortTypeChoices, choices=PowerPortTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
tag = TagFilterField(model) tag = TagFilterField(model)
@ -2851,7 +2851,7 @@ class PowerPortCreateForm(ComponentCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PowerPortTypeChoices), choices=add_blank_choice(PowerPortTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
maximum_draw = forms.IntegerField( maximum_draw = forms.IntegerField(
min_value=1, min_value=1,
@ -2929,7 +2929,7 @@ class PowerOutletFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PowerOutletTypeChoices, choices=PowerOutletTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
tag = TagFilterField(model) tag = TagFilterField(model)
@ -2968,7 +2968,7 @@ class PowerOutletCreateForm(ComponentCreateForm):
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PowerOutletTypeChoices), choices=add_blank_choice(PowerOutletTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
power_port = forms.ModelChoiceField( power_port = forms.ModelChoiceField(
queryset=PowerPort.objects.all(), queryset=PowerPort.objects.all(),
@ -3102,17 +3102,17 @@ class InterfaceFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=InterfaceTypeChoices, choices=InterfaceTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
enabled = forms.NullBooleanField( enabled = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
mgmt_only = forms.NullBooleanField( mgmt_only = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -3160,8 +3160,8 @@ class InterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm):
] ]
widgets = { widgets = {
'device': forms.HiddenInput(), 'device': forms.HiddenInput(),
'type': StaticSelect2(), 'type': StaticSelect(),
'mode': StaticSelect2(), 'mode': StaticSelect(),
} }
labels = { labels = {
'mode': '802.1Q Mode', 'mode': '802.1Q Mode',
@ -3192,7 +3192,7 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm):
model = Interface model = Interface
type = forms.ChoiceField( type = forms.ChoiceField(
choices=InterfaceTypeChoices, choices=InterfaceTypeChoices,
widget=StaticSelect2(), widget=StaticSelect(),
) )
enabled = forms.BooleanField( enabled = forms.BooleanField(
required=False, required=False,
@ -3231,7 +3231,7 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm):
mode = forms.ChoiceField( mode = forms.ChoiceField(
choices=add_blank_choice(InterfaceModeChoices), choices=add_blank_choice(InterfaceModeChoices),
required=False, required=False,
widget=StaticSelect2(), widget=StaticSelect(),
) )
untagged_vlan = DynamicModelChoiceField( untagged_vlan = DynamicModelChoiceField(
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
@ -3451,7 +3451,7 @@ class FrontPortFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
color = ColorField( color = ColorField(
required=False required=False
@ -3473,8 +3473,8 @@ class FrontPortForm(BootstrapMixin, CustomFieldModelForm):
] ]
widgets = { widgets = {
'device': forms.HiddenInput(), 'device': forms.HiddenInput(),
'type': StaticSelect2(), 'type': StaticSelect(),
'rear_port': StaticSelect2(), 'rear_port': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -3492,7 +3492,7 @@ class FrontPortCreateForm(ComponentCreateForm):
model = FrontPort model = FrontPort
type = forms.ChoiceField( type = forms.ChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
widget=StaticSelect2(), widget=StaticSelect(),
) )
color = ColorField( color = ColorField(
required=False required=False
@ -3639,7 +3639,7 @@ class RearPortFilterForm(DeviceComponentFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
color = ColorField( color = ColorField(
required=False required=False
@ -3660,7 +3660,7 @@ class RearPortForm(BootstrapMixin, CustomFieldModelForm):
] ]
widgets = { widgets = {
'device': forms.HiddenInput(), 'device': forms.HiddenInput(),
'type': StaticSelect2(), 'type': StaticSelect(),
} }
@ -3668,7 +3668,7 @@ class RearPortCreateForm(ComponentCreateForm):
model = RearPort model = RearPort
type = forms.ChoiceField( type = forms.ChoiceField(
choices=PortTypeChoices, choices=PortTypeChoices,
widget=StaticSelect2(), widget=StaticSelect(),
) )
color = ColorField( color = ColorField(
required=False required=False
@ -3766,7 +3766,7 @@ class PopulateDeviceBayForm(BootstrapMixin, forms.Form):
queryset=Device.objects.all(), queryset=Device.objects.all(),
label='Child Device', label='Child Device',
help_text="Child devices must first be created and assigned to the site/rack of the parent device.", help_text="Child devices must first be created and assigned to the site/rack of the parent device.",
widget=StaticSelect2(), widget=StaticSelect(),
) )
def __init__(self, device_bay, *args, **kwargs): def __init__(self, device_bay, *args, **kwargs):
@ -3981,7 +3981,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm):
) )
discovered = forms.NullBooleanField( discovered = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -4056,9 +4056,9 @@ class ConnectCableToDeviceForm(BootstrapMixin, CustomFieldModelForm):
'termination_b_id', 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags', 'termination_b_id', 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags',
] ]
widgets = { widgets = {
'status': StaticSelect2, 'status': StaticSelect,
'type': StaticSelect2, 'type': StaticSelect,
'length_unit': StaticSelect2, 'length_unit': StaticSelect,
} }
def clean_termination_b_id(self): def clean_termination_b_id(self):
@ -4276,9 +4276,9 @@ class CableForm(BootstrapMixin, CustomFieldModelForm):
'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags', 'type', 'status', 'label', 'color', 'length', 'length_unit', 'tags',
] ]
widgets = { widgets = {
'status': StaticSelect2, 'status': StaticSelect,
'type': StaticSelect2, 'type': StaticSelect,
'length_unit': StaticSelect2, 'length_unit': StaticSelect,
} }
error_messages = { error_messages = {
'length': { 'length': {
@ -4391,12 +4391,12 @@ class CableBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkE
choices=add_blank_choice(CableTypeChoices), choices=add_blank_choice(CableTypeChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
status = forms.ChoiceField( status = forms.ChoiceField(
choices=add_blank_choice(CableStatusChoices), choices=add_blank_choice(CableStatusChoices),
required=False, required=False,
widget=StaticSelect2(), widget=StaticSelect(),
initial='' initial=''
) )
label = forms.CharField( label = forms.CharField(
@ -4414,7 +4414,7 @@ class CableBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkE
choices=add_blank_choice(CableLengthUnitChoices), choices=add_blank_choice(CableLengthUnitChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
class Meta: class Meta:
@ -4472,12 +4472,12 @@ class CableFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=add_blank_choice(CableTypeChoices), choices=add_blank_choice(CableTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
status = forms.ChoiceField( status = forms.ChoiceField(
required=False, required=False,
choices=add_blank_choice(CableStatusChoices), choices=add_blank_choice(CableStatusChoices),
widget=StaticSelect2() widget=StaticSelect()
) )
color = ColorField( color = ColorField(
required=False required=False
@ -5045,10 +5045,10 @@ class PowerFeedForm(BootstrapMixin, CustomFieldModelForm):
('Characteristics', ('supply', 'voltage', 'amperage', 'phase', 'max_utilization')), ('Characteristics', ('supply', 'voltage', 'amperage', 'phase', 'max_utilization')),
) )
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
'type': StaticSelect2(), 'type': StaticSelect(),
'supply': StaticSelect2(), 'supply': StaticSelect(),
'phase': StaticSelect2(), 'phase': StaticSelect(),
} }
@ -5141,25 +5141,25 @@ class PowerFeedBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelB
choices=add_blank_choice(PowerFeedStatusChoices), choices=add_blank_choice(PowerFeedStatusChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PowerFeedTypeChoices), choices=add_blank_choice(PowerFeedTypeChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
supply = forms.ChoiceField( supply = forms.ChoiceField(
choices=add_blank_choice(PowerFeedSupplyChoices), choices=add_blank_choice(PowerFeedSupplyChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
phase = forms.ChoiceField( phase = forms.ChoiceField(
choices=add_blank_choice(PowerFeedPhaseChoices), choices=add_blank_choice(PowerFeedPhaseChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2() widget=StaticSelect()
) )
voltage = forms.IntegerField( voltage = forms.IntegerField(
required=False required=False
@ -5233,22 +5233,22 @@ class PowerFeedFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=PowerFeedStatusChoices, choices=PowerFeedStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
type = forms.ChoiceField( type = forms.ChoiceField(
choices=add_blank_choice(PowerFeedTypeChoices), choices=add_blank_choice(PowerFeedTypeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
supply = forms.ChoiceField( supply = forms.ChoiceField(
choices=add_blank_choice(PowerFeedSupplyChoices), choices=add_blank_choice(PowerFeedSupplyChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
phase = forms.ChoiceField( phase = forms.ChoiceField(
choices=add_blank_choice(PowerFeedPhaseChoices), choices=add_blank_choice(PowerFeedPhaseChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
voltage = forms.IntegerField( voltage = forms.IntegerField(
required=False required=False

View File

@ -9,8 +9,8 @@ from tenancy.models import Tenant, TenantGroup
from utilities.forms import ( from utilities.forms import (
add_blank_choice, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorField, add_blank_choice, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorField,
CommentField, ContentTypeChoiceField, ContentTypeMultipleChoiceField, CSVContentTypeField, CSVModelForm, CommentField, ContentTypeChoiceField, ContentTypeMultipleChoiceField, CSVContentTypeField, CSVModelForm,
CSVMultipleContentTypeField, DateTimePicker, DynamicModelMultipleChoiceField, JSONField, SlugField, StaticSelect2, CSVMultipleContentTypeField, DateTimePicker, DynamicModelMultipleChoiceField, JSONField, SlugField, StaticSelect,
StaticSelect2Multiple, BOOLEAN_WITH_BLANK_CHOICES, StaticSelectMultiple, BOOLEAN_WITH_BLANK_CHOICES,
) )
from virtualization.models import Cluster, ClusterGroup from virtualization.models import Cluster, ClusterGroup
from .choices import * from .choices import *
@ -87,14 +87,14 @@ class CustomFieldFilterForm(BootstrapMixin, forms.Form):
type = forms.MultipleChoiceField( type = forms.MultipleChoiceField(
choices=CustomFieldTypeChoices, choices=CustomFieldTypeChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
weight = forms.IntegerField( weight = forms.IntegerField(
required=False required=False
) )
required = forms.NullBooleanField( required = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -153,7 +153,7 @@ class CustomLinkBulkEditForm(BootstrapMixin, BulkEditForm):
button_class = forms.ChoiceField( button_class = forms.ChoiceField(
choices=CustomLinkButtonClassChoices, choices=CustomLinkButtonClassChoices,
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
class Meta: class Meta:
@ -174,7 +174,7 @@ class CustomLinkFilterForm(BootstrapMixin, forms.Form):
) )
new_window = forms.NullBooleanField( new_window = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -262,7 +262,7 @@ class ExportTemplateFilterForm(BootstrapMixin, forms.Form):
) )
as_attachment = forms.NullBooleanField( as_attachment = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -363,29 +363,29 @@ class WebhookFilterForm(BootstrapMixin, forms.Form):
http_method = forms.MultipleChoiceField( http_method = forms.MultipleChoiceField(
choices=WebhookHttpMethodChoices, choices=WebhookHttpMethodChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
enabled = forms.NullBooleanField( enabled = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
type_create = forms.NullBooleanField( type_create = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
type_update = forms.NullBooleanField( type_update = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
type_delete = forms.NullBooleanField( type_delete = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -734,7 +734,7 @@ class LocalConfigContextFilterForm(forms.Form):
local_context_data = forms.NullBooleanField( local_context_data = forms.NullBooleanField(
required=False, required=False,
label=_('Has local config context data'), label=_('Has local config context data'),
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -763,7 +763,7 @@ class JournalEntryForm(BootstrapMixin, forms.ModelForm):
kind = forms.ChoiceField( kind = forms.ChoiceField(
choices=add_blank_choice(JournalEntryKindChoices), choices=add_blank_choice(JournalEntryKindChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
class Meta: class Meta:
@ -828,7 +828,7 @@ class JournalEntryFilterForm(BootstrapMixin, forms.Form):
kind = forms.ChoiceField( kind = forms.ChoiceField(
choices=add_blank_choice(JournalEntryKindChoices), choices=add_blank_choice(JournalEntryKindChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
@ -855,7 +855,7 @@ class ObjectChangeFilterForm(BootstrapMixin, forms.Form):
action = forms.ChoiceField( action = forms.ChoiceField(
choices=add_blank_choice(ObjectChangeActionChoices), choices=add_blank_choice(ObjectChangeActionChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
user_id = DynamicModelMultipleChoiceField( user_id = DynamicModelMultipleChoiceField(
queryset=User.objects.all(), queryset=User.objects.all(),

View File

@ -13,7 +13,7 @@ from extras.choices import *
from extras.utils import FeatureQuery, extras_features from extras.utils import FeatureQuery, extras_features
from netbox.models import ChangeLoggedModel from netbox.models import ChangeLoggedModel
from utilities.forms import ( from utilities.forms import (
CSVChoiceField, DatePicker, LaxURLField, StaticSelect2Multiple, StaticSelect2, add_blank_choice, CSVChoiceField, DatePicker, LaxURLField, StaticSelectMultiple, StaticSelect, add_blank_choice,
) )
from utilities.querysets import RestrictedQuerySet from utilities.querysets import RestrictedQuerySet
from utilities.validators import validate_regex from utilities.validators import validate_regex
@ -226,7 +226,7 @@ class CustomField(ChangeLoggedModel):
(False, 'False'), (False, 'False'),
) )
field = forms.NullBooleanField( field = forms.NullBooleanField(
required=required, initial=initial, widget=StaticSelect2(choices=choices) required=required, initial=initial, widget=StaticSelect(choices=choices)
) )
# Date # Date
@ -248,12 +248,12 @@ class CustomField(ChangeLoggedModel):
if self.type == CustomFieldTypeChoices.TYPE_SELECT: if self.type == CustomFieldTypeChoices.TYPE_SELECT:
field_class = CSVChoiceField if for_csv_import else forms.ChoiceField field_class = CSVChoiceField if for_csv_import else forms.ChoiceField
field = field_class( field = field_class(
choices=choices, required=required, initial=initial, widget=StaticSelect2() choices=choices, required=required, initial=initial, widget=StaticSelect()
) )
else: else:
field_class = CSVChoiceField if for_csv_import else forms.MultipleChoiceField field_class = CSVChoiceField if for_csv_import else forms.MultipleChoiceField
field = field_class( field = field_class(
choices=choices, required=required, initial=initial, widget=StaticSelect2Multiple() choices=choices, required=required, initial=initial, widget=StaticSelectMultiple()
) )
# URL # URL

View File

@ -12,7 +12,7 @@ from tenancy.models import Tenant
from utilities.forms import ( from utilities.forms import (
add_blank_choice, BootstrapMixin, BulkEditNullBooleanSelect, ContentTypeChoiceField, CSVChoiceField, add_blank_choice, BootstrapMixin, BulkEditNullBooleanSelect, ContentTypeChoiceField, CSVChoiceField,
CSVModelChoiceField, DatePicker, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableIPAddressField, CSVModelChoiceField, DatePicker, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableIPAddressField,
NumericArrayField, ReturnURLForm, SlugField, StaticSelect2, StaticSelect2Multiple, TagFilterField, NumericArrayField, ReturnURLForm, SlugField, StaticSelect, StaticSelectMultiple, TagFilterField,
BOOLEAN_WITH_BLANK_CHOICES, BOOLEAN_WITH_BLANK_CHOICES,
) )
from virtualization.models import Cluster, ClusterGroup, VirtualMachine, VMInterface from virtualization.models import Cluster, ClusterGroup, VirtualMachine, VMInterface
@ -242,7 +242,7 @@ class RIRFilterForm(BootstrapMixin, forms.Form):
is_private = forms.NullBooleanField( is_private = forms.NullBooleanField(
required=False, required=False,
label=_('Private'), label=_('Private'),
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -340,7 +340,7 @@ class AggregateFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil
required=False, required=False,
choices=add_blank_choice(IPAddressFamilyChoices), choices=add_blank_choice(IPAddressFamilyChoices),
label=_('Address family'), label=_('Address family'),
widget=StaticSelect2() widget=StaticSelect()
) )
rir_id = DynamicModelMultipleChoiceField( rir_id = DynamicModelMultipleChoiceField(
queryset=RIR.objects.all(), queryset=RIR.objects.all(),
@ -464,7 +464,7 @@ class PrefixForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
('Tenancy', ('tenant_group', 'tenant')), ('Tenancy', ('tenant_group', 'tenant')),
) )
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -575,7 +575,7 @@ class PrefixBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk
status = forms.ChoiceField( status = forms.ChoiceField(
choices=add_blank_choice(PrefixStatusChoices), choices=add_blank_choice(PrefixStatusChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
role = DynamicModelChoiceField( role = DynamicModelChoiceField(
queryset=Role.objects.all(), queryset=Role.objects.all(),
@ -630,13 +630,13 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilter
required=False, required=False,
choices=add_blank_choice(IPAddressFamilyChoices), choices=add_blank_choice(IPAddressFamilyChoices),
label=_('Address family'), label=_('Address family'),
widget=StaticSelect2() widget=StaticSelect()
) )
mask_length = forms.ChoiceField( mask_length = forms.ChoiceField(
required=False, required=False,
choices=PREFIX_MASK_LENGTH_CHOICES, choices=PREFIX_MASK_LENGTH_CHOICES,
label=_('Mask length'), label=_('Mask length'),
widget=StaticSelect2() widget=StaticSelect()
) )
vrf_id = DynamicModelMultipleChoiceField( vrf_id = DynamicModelMultipleChoiceField(
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
@ -652,7 +652,7 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilter
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=PrefixStatusChoices, choices=PrefixStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
region_id = DynamicModelMultipleChoiceField( region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
@ -682,14 +682,14 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilter
is_pool = forms.NullBooleanField( is_pool = forms.NullBooleanField(
required=False, required=False,
label=_('Is a pool'), label=_('Is a pool'),
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
mark_utilized = forms.NullBooleanField( mark_utilized = forms.NullBooleanField(
required=False, required=False,
label=_('Marked as 100% utilized'), label=_('Marked as 100% utilized'),
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -961,8 +961,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
'tags', 'tags',
] ]
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
'role': StaticSelect2(), 'role': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -1061,8 +1061,8 @@ class IPAddressBulkAddForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
'address', 'vrf', 'status', 'role', 'dns_name', 'description', 'tenant_group', 'tenant', 'tags', 'address', 'vrf', 'status', 'role', 'dns_name', 'description', 'tenant_group', 'tenant', 'tags',
] ]
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
'role': StaticSelect2(), 'role': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -1193,12 +1193,12 @@ class IPAddressBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelB
status = forms.ChoiceField( status = forms.ChoiceField(
choices=add_blank_choice(IPAddressStatusChoices), choices=add_blank_choice(IPAddressStatusChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
role = forms.ChoiceField( role = forms.ChoiceField(
choices=add_blank_choice(IPAddressRoleChoices), choices=add_blank_choice(IPAddressRoleChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
dns_name = forms.CharField( dns_name = forms.CharField(
max_length=255, max_length=255,
@ -1253,13 +1253,13 @@ class IPAddressFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil
required=False, required=False,
choices=add_blank_choice(IPAddressFamilyChoices), choices=add_blank_choice(IPAddressFamilyChoices),
label=_('Address family'), label=_('Address family'),
widget=StaticSelect2() widget=StaticSelect()
) )
mask_length = forms.ChoiceField( mask_length = forms.ChoiceField(
required=False, required=False,
choices=IPADDRESS_MASK_LENGTH_CHOICES, choices=IPADDRESS_MASK_LENGTH_CHOICES,
label=_('Mask length'), label=_('Mask length'),
widget=StaticSelect2() widget=StaticSelect()
) )
vrf_id = DynamicModelMultipleChoiceField( vrf_id = DynamicModelMultipleChoiceField(
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
@ -1275,17 +1275,17 @@ class IPAddressFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFil
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=IPAddressStatusChoices, choices=IPAddressStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
role = forms.MultipleChoiceField( role = forms.MultipleChoiceField(
choices=IPAddressRoleChoices, choices=IPAddressRoleChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
assigned_to_interface = forms.NullBooleanField( assigned_to_interface = forms.NullBooleanField(
required=False, required=False,
label=_('Assigned to an interface'), label=_('Assigned to an interface'),
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -1300,7 +1300,7 @@ class VLANGroupForm(BootstrapMixin, CustomFieldModelForm):
scope_type = ContentTypeChoiceField( scope_type = ContentTypeChoiceField(
queryset=ContentType.objects.filter(model__in=VLANGROUP_SCOPE_TYPES), queryset=ContentType.objects.filter(model__in=VLANGROUP_SCOPE_TYPES),
required=False, required=False,
widget=StaticSelect2 widget=StaticSelect
) )
region = DynamicModelChoiceField( region = DynamicModelChoiceField(
queryset=Region.objects.all(), queryset=Region.objects.all(),
@ -1370,7 +1370,7 @@ class VLANGroupForm(BootstrapMixin, CustomFieldModelForm):
'clustergroup', 'cluster', 'clustergroup', 'cluster',
] ]
widgets = { widgets = {
'scope_type': StaticSelect2, 'scope_type': StaticSelect,
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -1481,7 +1481,7 @@ class VLANForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
('virtualization.cluster', 'Cluster'), ('virtualization.cluster', 'Cluster'),
), ),
required=False, required=False,
widget=StaticSelect2, widget=StaticSelect,
label='Group scope' label='Group scope'
) )
group = DynamicModelChoiceField( group = DynamicModelChoiceField(
@ -1544,7 +1544,7 @@ class VLANForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
'role': "The primary function of this VLAN", 'role': "The primary function of this VLAN",
} }
widgets = { widgets = {
'status': StaticSelect2(), 'status': StaticSelect(),
} }
@ -1622,7 +1622,7 @@ class VLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
status = forms.ChoiceField( status = forms.ChoiceField(
choices=add_blank_choice(VLANStatusChoices), choices=add_blank_choice(VLANStatusChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
role = DynamicModelChoiceField( role = DynamicModelChoiceField(
queryset=Role.objects.all(), queryset=Role.objects.all(),
@ -1680,7 +1680,7 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=VLANStatusChoices, choices=VLANStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
role_id = DynamicModelMultipleChoiceField( role_id = DynamicModelMultipleChoiceField(
queryset=Role.objects.all(), queryset=Role.objects.all(),
@ -1718,8 +1718,8 @@ class ServiceForm(BootstrapMixin, CustomFieldModelForm):
"reachable via all IPs assigned to the device.", "reachable via all IPs assigned to the device.",
} }
widgets = { widgets = {
'protocol': StaticSelect2(), 'protocol': StaticSelect(),
'ipaddresses': StaticSelect2Multiple(), 'ipaddresses': StaticSelectMultiple(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -1743,7 +1743,7 @@ class ServiceFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
protocol = forms.ChoiceField( protocol = forms.ChoiceField(
choices=add_blank_choice(ServiceProtocolChoices), choices=add_blank_choice(ServiceProtocolChoices),
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
port = forms.IntegerField( port = forms.IntegerField(
required=False, required=False,
@ -1782,7 +1782,7 @@ class ServiceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul
protocol = forms.ChoiceField( protocol = forms.ChoiceField(
choices=add_blank_choice(ServiceProtocolChoices), choices=add_blank_choice(ServiceProtocolChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
ports = NumericArrayField( ports = NumericArrayField(
base_field=forms.IntegerField( base_field=forms.IntegerField(

Binary file not shown.

Binary file not shown.

View File

@ -185,7 +185,7 @@ function getDisplayName(result: APIObjectBase, select: HTMLSelectElement): strin
* Initialize select elements that rely on the NetBox API to build their options. * Initialize select elements that rely on the NetBox API to build their options.
*/ */
export function initApiSelect() { export function initApiSelect() {
for (const select of getElements<HTMLSelectElement>('.netbox-select2-api')) { for (const select of getElements<HTMLSelectElement>('.netbox-api-select')) {
const dependencies = getDependencyIds(select); const dependencies = getDependencyIds(select);
// Initialize an event, so other elements relying on this element can subscribe to this // Initialize an event, so other elements relying on this element can subscribe to this
// element's value. // element's value.

View File

@ -16,7 +16,7 @@ function canChangeColor(option: Option | HTMLOptionElement): boolean {
* the selected option. * the selected option.
*/ */
export function initColorSelect(): void { export function initColorSelect(): void {
for (const select of getElements<HTMLSelectElement>('select.netbox-select2-color-picker')) { for (const select of getElements<HTMLSelectElement>('select.netbox-color-select')) {
for (const option of select.options) { for (const option of select.options) {
if (canChangeColor(option)) { if (canChangeColor(option)) {
// Get the background color from the option's value. // Get the background color from the option's value.

View File

@ -2,7 +2,7 @@ import SlimSelect from 'slim-select';
import { getElements } from '../util'; import { getElements } from '../util';
export function initStaticSelect() { export function initStaticSelect() {
for (const select of getElements<HTMLSelectElement>('.netbox-select2-static')) { for (const select of getElements<HTMLSelectElement>('.netbox-select-static')) {
if (select !== null) { if (select !== null) {
const label = document.querySelector(`label[for=${select.id}]`) as HTMLLabelElement; const label = document.querySelector(`label[for=${select.id}]`) as HTMLLabelElement;

View File

@ -85,7 +85,7 @@ class TagFilterField(forms.MultipleChoiceField):
:param model: The model of the filter :param model: The model of the filter
""" """
widget = widgets.StaticSelect2Multiple widget = widgets.StaticSelectMultiple
def __init__(self, model, *args, **kwargs): def __init__(self, model, *args, **kwargs):
def get_choices(): def get_choices():

View File

@ -4,7 +4,7 @@ import re
import yaml import yaml
from django import forms from django import forms
from .widgets import APISelect, APISelectMultiple, StaticSelect2 from .widgets import APISelect, APISelectMultiple, StaticSelect
__all__ = ( __all__ = (
@ -35,7 +35,7 @@ class BootstrapMixin(forms.BaseForm):
forms.Select, forms.Select,
APISelect, APISelect,
APISelectMultiple, APISelectMultiple,
StaticSelect2, StaticSelect,
] ]
for field_name, field in self.fields.items(): for field_name, field in self.fields.items():

View File

@ -21,8 +21,8 @@ __all__ = (
'SelectWithPK', 'SelectWithPK',
'SlugWidget', 'SlugWidget',
'SmallTextarea', 'SmallTextarea',
'StaticSelect2', 'StaticSelect',
'StaticSelect2Multiple', 'StaticSelectMultiple',
'TimePicker', 'TimePicker',
) )
@ -50,7 +50,7 @@ class ColorSelect(forms.Select):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
kwargs['choices'] = add_blank_choice(ColorChoices) kwargs['choices'] = add_blank_choice(ColorChoices)
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.attrs['class'] = 'netbox-select2-color-picker' self.attrs['class'] = 'netbox-color-select'
class BulkEditNullBooleanSelect(forms.NullBooleanSelect): class BulkEditNullBooleanSelect(forms.NullBooleanSelect):
@ -67,7 +67,7 @@ class BulkEditNullBooleanSelect(forms.NullBooleanSelect):
('2', 'Yes'), ('2', 'Yes'),
('3', 'No'), ('3', 'No'),
) )
self.attrs['class'] = 'netbox-select2-static' self.attrs['class'] = 'netbox-static-select'
class SelectWithDisabled(forms.Select): class SelectWithDisabled(forms.Select):
@ -78,17 +78,17 @@ class SelectWithDisabled(forms.Select):
option_template_name = 'widgets/selectwithdisabled_option.html' option_template_name = 'widgets/selectwithdisabled_option.html'
class StaticSelect2(SelectWithDisabled): class StaticSelect(SelectWithDisabled):
""" """
A static <select> form widget using the Select2 library. A static <select/> form widget which is client-side rendered.
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.attrs['class'] = 'netbox-select2-static' self.attrs['class'] = 'netbox-static-select'
class StaticSelect2Multiple(StaticSelect2, forms.SelectMultiple): class StaticSelectMultiple(StaticSelect, forms.SelectMultiple):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -96,14 +96,14 @@ class StaticSelect2Multiple(StaticSelect2, forms.SelectMultiple):
self.attrs['data-multiple'] = 1 self.attrs['data-multiple'] = 1
class SelectWithPK(StaticSelect2): class SelectWithPK(StaticSelect):
""" """
Include the primary key of each option in the option label (e.g. "Router7 (4721)"). Include the primary key of each option in the option label (e.g. "Router7 (4721)").
""" """
option_template_name = 'widgets/select_option_with_pk.html' option_template_name = 'widgets/select_option_with_pk.html'
class ContentTypeSelect(StaticSelect2): class ContentTypeSelect(StaticSelect):
""" """
Appends an `api-value` attribute equal to the slugified model name for each ContentType. For example: Appends an `api-value` attribute equal to the slugified model name for each ContentType. For example:
<option value="37" api-value="console-server-port">console server port</option> <option value="37" api-value="console-server-port">console server port</option>
@ -138,7 +138,7 @@ class APISelect(SelectWithDisabled):
def __init__(self, api_url=None, full=False, *args, **kwargs): def __init__(self, api_url=None, full=False, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.attrs['class'] = 'netbox-select2-api' self.attrs['class'] = 'netbox-api-select'
if api_url: if api_url:
self.attrs['data-url'] = '/{}{}'.format(settings.BASE_PATH, api_url.lstrip('/')) # Inject BASE_PATH self.attrs['data-url'] = '/{}{}'.format(settings.BASE_PATH, api_url.lstrip('/')) # Inject BASE_PATH

View File

@ -18,7 +18,7 @@ from tenancy.models import Tenant
from utilities.forms import ( from utilities.forms import (
add_blank_choice, BootstrapMixin, BulkEditNullBooleanSelect, BulkRenameForm, CommentField, ConfirmationForm, add_blank_choice, BootstrapMixin, BulkEditNullBooleanSelect, BulkRenameForm, CommentField, ConfirmationForm,
CSVChoiceField, CSVModelChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableNameField, CSVChoiceField, CSVModelChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableNameField,
form_from_model, JSONField, SlugField, SmallTextarea, StaticSelect2, StaticSelect2Multiple, TagFilterField, form_from_model, JSONField, SlugField, SmallTextarea, StaticSelect, StaticSelectMultiple, TagFilterField,
BOOLEAN_WITH_BLANK_CHOICES, BOOLEAN_WITH_BLANK_CHOICES,
) )
from .choices import * from .choices import *
@ -389,9 +389,9 @@ class VirtualMachineForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
"config context", "config context",
} }
widgets = { widgets = {
"status": StaticSelect2(), "status": StaticSelect(),
'primary_ip4': StaticSelect2(), 'primary_ip4': StaticSelect(),
'primary_ip6': StaticSelect2(), 'primary_ip6': StaticSelect(),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -483,7 +483,7 @@ class VirtualMachineBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldM
choices=add_blank_choice(VirtualMachineStatusChoices), choices=add_blank_choice(VirtualMachineStatusChoices),
required=False, required=False,
initial='', initial='',
widget=StaticSelect2(), widget=StaticSelect(),
) )
cluster = DynamicModelChoiceField( cluster = DynamicModelChoiceField(
queryset=Cluster.objects.all(), queryset=Cluster.objects.all(),
@ -592,7 +592,7 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod
status = forms.MultipleChoiceField( status = forms.MultipleChoiceField(
choices=VirtualMachineStatusChoices, choices=VirtualMachineStatusChoices,
required=False, required=False,
widget=StaticSelect2Multiple() widget=StaticSelectMultiple()
) )
platform_id = DynamicModelMultipleChoiceField( platform_id = DynamicModelMultipleChoiceField(
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
@ -607,7 +607,7 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod
has_primary_ip = forms.NullBooleanField( has_primary_ip = forms.NullBooleanField(
required=False, required=False,
label='Has a primary IP', label='Has a primary IP',
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )
@ -647,7 +647,7 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm)
] ]
widgets = { widgets = {
'virtual_machine': forms.HiddenInput(), 'virtual_machine': forms.HiddenInput(),
'mode': StaticSelect2() 'mode': StaticSelect()
} }
labels = { labels = {
'mode': '802.1Q Mode', 'mode': '802.1Q Mode',
@ -704,7 +704,7 @@ class VMInterfaceCreateForm(BootstrapMixin, CustomFieldsMixin, InterfaceCommonFo
mode = forms.ChoiceField( mode = forms.ChoiceField(
choices=add_blank_choice(InterfaceModeChoices), choices=add_blank_choice(InterfaceModeChoices),
required=False, required=False,
widget=StaticSelect2(), widget=StaticSelect(),
) )
untagged_vlan = DynamicModelChoiceField( untagged_vlan = DynamicModelChoiceField(
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
@ -789,7 +789,7 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldMode
mode = forms.ChoiceField( mode = forms.ChoiceField(
choices=add_blank_choice(InterfaceModeChoices), choices=add_blank_choice(InterfaceModeChoices),
required=False, required=False,
widget=StaticSelect2() widget=StaticSelect()
) )
untagged_vlan = DynamicModelChoiceField( untagged_vlan = DynamicModelChoiceField(
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
@ -868,7 +868,7 @@ class VMInterfaceFilterForm(BootstrapMixin, forms.Form):
) )
enabled = forms.NullBooleanField( enabled = forms.NullBooleanField(
required=False, required=False,
widget=StaticSelect2( widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES choices=BOOLEAN_WITH_BLANK_CHOICES
) )
) )