Closes #11765: Remove StaticSelect & StaticSelectMultiple (#11767)

* Remove StaticSelect, StaticSelectMultiple form widgets

* Tag custom ChoiceField, MultipleChoiceField classes for removal in v3.6
This commit is contained in:
Jeremy Stretch
2023-02-16 10:25:51 -05:00
committed by jeremystretch
parent c73829fe92
commit b9bd96f0c7
30 changed files with 221 additions and 485 deletions
+3 -5
View File
@@ -4,7 +4,7 @@ from django.utils.translation import gettext as _
from extras.choices import *
from extras.models import *
from utilities.forms import (
add_blank_choice, BulkEditForm, BulkEditNullBooleanSelect, ColorField, StaticSelect,
add_blank_choice, BulkEditForm, BulkEditNullBooleanSelect, ColorField,
)
__all__ = (
@@ -41,8 +41,7 @@ class CustomFieldBulkEditForm(BulkEditForm):
label=_("UI visibility"),
choices=add_blank_choice(CustomFieldVisibilityChoices),
required=False,
initial='',
widget=StaticSelect()
initial=''
)
nullable_fields = ('group_name', 'description',)
@@ -66,8 +65,7 @@ class CustomLinkBulkEditForm(BulkEditForm):
)
button_class = forms.ChoiceField(
choices=add_blank_choice(CustomLinkButtonClassChoices),
required=False,
widget=StaticSelect()
required=False
)
+19 -22
View File
@@ -12,8 +12,8 @@ from netbox.forms.base import NetBoxModelFilterSetForm
from tenancy.models import Tenant, TenantGroup
from utilities.forms import (
add_blank_choice, APISelectMultiple, BOOLEAN_WITH_BLANK_CHOICES, ContentTypeChoiceField,
ContentTypeMultipleChoiceField, DateTimePicker, DynamicModelMultipleChoiceField, FilterForm, MultipleChoiceField,
StaticSelect, TagFilterField,
ContentTypeMultipleChoiceField, DateTimePicker, DynamicModelMultipleChoiceField, FilterForm,
TagFilterField,
)
from virtualization.models import Cluster, ClusterGroup, ClusterType
from .mixins import SavedFiltersMixin
@@ -43,7 +43,7 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm):
required=False,
label=_('Object type')
)
type = MultipleChoiceField(
type = forms.MultipleChoiceField(
choices=CustomFieldTypeChoices,
required=False,
label=_('Field type')
@@ -56,15 +56,14 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm):
)
required = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
ui_visibility = forms.ChoiceField(
choices=add_blank_choice(CustomFieldVisibilityChoices),
required=False,
label=_('UI visibility'),
widget=StaticSelect()
label=_('UI visibility')
)
@@ -82,7 +81,7 @@ class JobResultFilterForm(SavedFiltersMixin, FilterForm):
queryset=ContentType.objects.filter(FeatureQuery('job_results').get_query()),
required=False,
)
status = MultipleChoiceField(
status = forms.MultipleChoiceField(
choices=JobResultStatusChoices,
required=False
)
@@ -139,13 +138,13 @@ class CustomLinkFilterForm(SavedFiltersMixin, FilterForm):
)
enabled = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
new_window = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
@@ -186,7 +185,7 @@ class ExportTemplateFilterForm(SavedFiltersMixin, FilterForm):
)
as_attachment = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
@@ -203,13 +202,13 @@ class SavedFilterFilterForm(SavedFiltersMixin, FilterForm):
)
enabled = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
shared = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
@@ -229,32 +228,32 @@ class WebhookFilterForm(SavedFiltersMixin, FilterForm):
required=False,
label=_('Object type')
)
http_method = MultipleChoiceField(
http_method = forms.MultipleChoiceField(
choices=WebhookHttpMethodChoices,
required=False,
label=_('HTTP method')
)
enabled = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
type_create = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
type_update = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
type_delete = forms.NullBooleanField(
required=False,
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
@@ -363,7 +362,7 @@ class LocalConfigContextFilterForm(forms.Form):
local_context_data = forms.NullBooleanField(
required=False,
label=_('Has local config context data'),
widget=StaticSelect(
widget=forms.Select(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
@@ -404,8 +403,7 @@ class JournalEntryFilterForm(NetBoxModelFilterSetForm):
)
kind = forms.ChoiceField(
choices=add_blank_choice(JournalEntryKindChoices),
required=False,
widget=StaticSelect()
required=False
)
tag = TagFilterField(model)
@@ -429,8 +427,7 @@ class ObjectChangeFilterForm(SavedFiltersMixin, FilterForm):
)
action = forms.ChoiceField(
choices=add_blank_choice(ObjectChangeActionChoices),
required=False,
widget=StaticSelect()
required=False
)
user_id = DynamicModelMultipleChoiceField(
queryset=User.objects.all(),
+2 -10
View File
@@ -12,7 +12,7 @@ from netbox.forms import NetBoxModelForm
from tenancy.models import Tenant, TenantGroup
from utilities.forms import (
add_blank_choice, BootstrapMixin, CommentField, ContentTypeChoiceField, ContentTypeMultipleChoiceField,
DynamicModelMultipleChoiceField, JSONField, SlugField, StaticSelect,
DynamicModelMultipleChoiceField, JSONField, SlugField,
)
from virtualization.models import Cluster, ClusterGroup, ClusterType
@@ -58,11 +58,6 @@ class CustomFieldForm(BootstrapMixin, forms.ModelForm):
'type': _("The type of data stored in this field. For object/multi-object fields, select the related object "
"type below.")
}
widgets = {
'type': StaticSelect(),
'filter_logic': StaticSelect(),
'ui_visibility': StaticSelect(),
}
class CustomLinkForm(BootstrapMixin, forms.ModelForm):
@@ -80,7 +75,6 @@ class CustomLinkForm(BootstrapMixin, forms.ModelForm):
model = CustomLink
fields = '__all__'
widgets = {
'button_class': StaticSelect(),
'link_text': forms.Textarea(attrs={'class': 'font-monospace'}),
'link_url': forms.Textarea(attrs={'class': 'font-monospace'}),
}
@@ -172,7 +166,6 @@ class WebhookForm(BootstrapMixin, forms.ModelForm):
'type_delete': 'Deletions',
}
widgets = {
'http_method': StaticSelect(),
'additional_headers': forms.Textarea(attrs={'class': 'font-monospace'}),
'body_template': forms.Textarea(attrs={'class': 'font-monospace'}),
'conditions': forms.Textarea(attrs={'class': 'font-monospace'}),
@@ -288,8 +281,7 @@ class ImageAttachmentForm(BootstrapMixin, forms.ModelForm):
class JournalEntryForm(NetBoxModelForm):
kind = forms.ChoiceField(
choices=add_blank_choice(JournalEntryKindChoices),
required=False,
widget=StaticSelect()
required=False
)
comments = CommentField()
+5 -10
View File
@@ -1,6 +1,6 @@
import decimal
import re
from datetime import datetime, date
import decimal
import django_filters
from django import forms
@@ -24,12 +24,11 @@ from utilities.forms.fields import (
CSVChoiceField, CSVModelChoiceField, CSVModelMultipleChoiceField, CSVMultipleChoiceField, DynamicModelChoiceField,
DynamicModelMultipleChoiceField, JSONField, LaxURLField,
)
from utilities.forms.widgets import DatePicker, StaticSelectMultiple, StaticSelect
from utilities.forms.utils import add_blank_choice
from utilities.forms.widgets import DatePicker
from utilities.querysets import RestrictedQuerySet
from utilities.validators import validate_regex
__all__ = (
'CustomField',
'CustomFieldManager',
@@ -374,7 +373,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
(False, 'False'),
)
field = forms.NullBooleanField(
required=required, initial=initial, widget=StaticSelect(choices=choices)
required=required, initial=initial, widget=forms.Select(choices=choices)
)
# Date
@@ -395,14 +394,10 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
if self.type == CustomFieldTypeChoices.TYPE_SELECT:
field_class = CSVChoiceField if for_csv_import else forms.ChoiceField
field = field_class(
choices=choices, required=required, initial=initial, widget=StaticSelect()
)
field = field_class(choices=choices, required=required, initial=initial)
else:
field_class = CSVMultipleChoiceField if for_csv_import else forms.MultipleChoiceField
field = field_class(
choices=choices, required=required, initial=initial, widget=StaticSelectMultiple()
)
field = field_class(choices=choices, required=required, initial=initial)
# URL
elif self.type == CustomFieldTypeChoices.TYPE_URL: