diff --git a/netbox/extras/forms/models.py b/netbox/extras/forms/models.py
index 1e619ebec..89ab7aa19 100644
--- a/netbox/extras/forms/models.py
+++ b/netbox/extras/forms/models.py
@@ -7,8 +7,8 @@ from extras.models import *
from extras.utils import FeatureQuery
from tenancy.models import Tenant, TenantGroup
from utilities.forms import (
- add_blank_choice, BootstrapMixin, CommentField, ContentTypeChoiceField,
- ContentTypeMultipleChoiceField, DynamicModelMultipleChoiceField, JSONField, SlugField, StaticSelect,
+ add_blank_choice, BootstrapMixin, CommentField, ContentTypeChoiceField, ContentTypeMultipleChoiceField,
+ DynamicModelMultipleChoiceField, JSONField, SlugField, StaticSelect,
)
from virtualization.models import Cluster, ClusterGroup
@@ -41,6 +41,10 @@ class CustomFieldForm(BootstrapMixin, forms.ModelForm):
('Values', ('default', 'choices')),
('Validation', ('validation_minimum', 'validation_maximum', 'validation_regex')),
)
+ widgets = {
+ 'type': StaticSelect(),
+ 'filter_logic': StaticSelect(),
+ }
class CustomLinkForm(BootstrapMixin, forms.ModelForm):
@@ -57,6 +61,7 @@ class CustomLinkForm(BootstrapMixin, forms.ModelForm):
('Templates', ('link_text', 'link_url')),
)
widgets = {
+ 'button_class': StaticSelect(),
'link_text': forms.Textarea(attrs={'class': 'font-monospace'}),
'link_url': forms.Textarea(attrs={'class': 'font-monospace'}),
}
@@ -96,8 +101,7 @@ class WebhookForm(BootstrapMixin, forms.ModelForm):
model = Webhook
fields = '__all__'
fieldsets = (
- ('Webhook', ('name', 'enabled')),
- ('Assigned Models', ('content_types',)),
+ ('Webhook', ('name', 'content_types', 'enabled')),
('Events', ('type_create', 'type_update', 'type_delete')),
('HTTP Request', (
'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret',
@@ -105,7 +109,13 @@ class WebhookForm(BootstrapMixin, forms.ModelForm):
('Conditions', ('conditions',)),
('SSL', ('ssl_verification', 'ca_file_path')),
)
+ labels = {
+ 'type_create': 'Creations',
+ 'type_update': 'Updates',
+ 'type_delete': 'Deletions',
+ }
widgets = {
+ 'http_method': StaticSelect(),
'additional_headers': forms.Textarea(attrs={'class': 'font-monospace'}),
'body_template': forms.Textarea(attrs={'class': 'font-monospace'}),
}
diff --git a/netbox/ipam/forms/models.py b/netbox/ipam/forms/models.py
index 0f85a95b1..4ed8aa267 100644
--- a/netbox/ipam/forms/models.py
+++ b/netbox/ipam/forms/models.py
@@ -628,8 +628,7 @@ class FHRPGroupAssignmentForm(BootstrapMixin, forms.ModelForm):
class VLANGroupForm(CustomFieldModelForm):
scope_type = ContentTypeChoiceField(
queryset=ContentType.objects.filter(model__in=VLANGROUP_SCOPE_TYPES),
- required=False,
- widget=StaticSelect
+ required=False
)
region = DynamicModelChoiceField(
queryset=Region.objects.all(),
diff --git a/netbox/project-static/dist/netbox-light.css b/netbox/project-static/dist/netbox-light.css
index 23dc8d382..215f986bb 100644
Binary files a/netbox/project-static/dist/netbox-light.css and b/netbox/project-static/dist/netbox-light.css differ
diff --git a/netbox/project-static/dist/netbox-print.css b/netbox/project-static/dist/netbox-print.css
index dde212a6c..2d702b89a 100644
Binary files a/netbox/project-static/dist/netbox-print.css and b/netbox/project-static/dist/netbox-print.css differ
diff --git a/netbox/project-static/styles/theme-light.scss b/netbox/project-static/styles/theme-light.scss
index 4e638c75e..22cc48108 100644
--- a/netbox/project-static/styles/theme-light.scss
+++ b/netbox/project-static/styles/theme-light.scss
@@ -2,8 +2,6 @@
@import './theme-base.scss';
-$input-border-color: $gray-200;
-
$theme-colors: map-merge(
$theme-colors,
(
diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py
index 897dbc174..c9edca535 100644
--- a/netbox/utilities/forms/fields.py
+++ b/netbox/utilities/forms/fields.py
@@ -168,11 +168,11 @@ class ContentTypeChoiceMixin:
class ContentTypeChoiceField(ContentTypeChoiceMixin, forms.ModelChoiceField):
- pass
+ widget = widgets.StaticSelect
class ContentTypeMultipleChoiceField(ContentTypeChoiceMixin, forms.ModelMultipleChoiceField):
- pass
+ widget = widgets.StaticSelectMultiple
#
diff --git a/netbox/utilities/forms/widgets.py b/netbox/utilities/forms/widgets.py
index 069cbf8db..6e227bb81 100644
--- a/netbox/utilities/forms/widgets.py
+++ b/netbox/utilities/forms/widgets.py
@@ -14,7 +14,6 @@ __all__ = (
'BulkEditNullBooleanSelect',
'ClearableFileInput',
'ColorSelect',
- 'ContentTypeSelect',
'DatePicker',
'DateTimePicker',
'NumericArrayField',
@@ -110,15 +109,6 @@ class SelectWithPK(StaticSelect):
option_template_name = 'widgets/select_option_with_pk.html'
-class ContentTypeSelect(StaticSelect):
- """
- Appends an `api-value` attribute equal to the slugified model name for each ContentType. For example:
-
- This attribute can be used to reference the relevant API endpoint for a particular ContentType.
- """
- option_template_name = 'widgets/select_contenttype.html'
-
-
class SelectSpeedWidget(forms.NumberInput):
"""
Speed field with dropdown selections for convenience.
diff --git a/netbox/utilities/templates/widgets/select_contenttype.html b/netbox/utilities/templates/widgets/select_contenttype.html
deleted file mode 100644
index 04c42c371..000000000
--- a/netbox/utilities/templates/widgets/select_contenttype.html
+++ /dev/null
@@ -1 +0,0 @@
-