mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-09 00:58:16 -06:00
Add missing form fields & table columns for validation attributes
This commit is contained in:
parent
7391a471b0
commit
837d402f1d
@ -6,6 +6,7 @@ from extras.models import *
|
|||||||
from netbox.forms import NetBoxModelBulkEditForm
|
from netbox.forms import NetBoxModelBulkEditForm
|
||||||
from utilities.forms import BulkEditForm, add_blank_choice
|
from utilities.forms import BulkEditForm, add_blank_choice
|
||||||
from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField
|
from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField
|
||||||
|
from utilities.forms.rendering import FieldSet
|
||||||
from utilities.forms.widgets import BulkEditNullBooleanSelect
|
from utilities.forms.widgets import BulkEditNullBooleanSelect
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@ -64,6 +65,18 @@ class CustomFieldBulkEditForm(BulkEditForm):
|
|||||||
required=False,
|
required=False,
|
||||||
widget=BulkEditNullBooleanSelect()
|
widget=BulkEditNullBooleanSelect()
|
||||||
)
|
)
|
||||||
|
validation_minimum = forms.IntegerField(
|
||||||
|
label=_('Minimum value'),
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
validation_maximum = forms.IntegerField(
|
||||||
|
label=_('Maximum value'),
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
|
validation_regex = forms.CharField(
|
||||||
|
label=_('Validation regex'),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
validation_unique = forms.NullBooleanField(
|
validation_unique = forms.NullBooleanField(
|
||||||
label=_('Must be unique'),
|
label=_('Must be unique'),
|
||||||
required=False,
|
required=False,
|
||||||
@ -71,6 +84,13 @@ class CustomFieldBulkEditForm(BulkEditForm):
|
|||||||
)
|
)
|
||||||
comments = CommentField()
|
comments = CommentField()
|
||||||
|
|
||||||
|
fieldsets = (
|
||||||
|
FieldSet('group_name', 'description', 'weight', 'choice_set', name=_('Attributes')),
|
||||||
|
FieldSet('ui_visible', 'ui_editable', 'is_cloneable', name=_('Behavior')),
|
||||||
|
FieldSet(
|
||||||
|
'validation_minimum', 'validation_maximum', 'validation_regex', 'validation_unique', name=_('Validation')
|
||||||
|
),
|
||||||
|
)
|
||||||
nullable_fields = ('group_name', 'description', 'choice_set')
|
nullable_fields = ('group_name', 'description', 'choice_set')
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,7 +41,9 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm):
|
|||||||
'type', 'related_object_type_id', 'group_name', 'weight', 'required', 'choice_set_id', 'ui_visible',
|
'type', 'related_object_type_id', 'group_name', 'weight', 'required', 'choice_set_id', 'ui_visible',
|
||||||
'ui_editable', 'is_cloneable', name=_('Attributes')
|
'ui_editable', 'is_cloneable', name=_('Attributes')
|
||||||
),
|
),
|
||||||
FieldSet('validation_unique', name=_('Validation')),
|
FieldSet(
|
||||||
|
'validation_minimum', 'validation_maximum', 'validation_regex', 'validation_unique', name=_('Validation')
|
||||||
|
),
|
||||||
)
|
)
|
||||||
related_object_type_id = ContentTypeMultipleChoiceField(
|
related_object_type_id = ContentTypeMultipleChoiceField(
|
||||||
queryset=ObjectType.objects.with_feature('custom_fields'),
|
queryset=ObjectType.objects.with_feature('custom_fields'),
|
||||||
@ -90,6 +92,18 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm):
|
|||||||
choices=BOOLEAN_WITH_BLANK_CHOICES
|
choices=BOOLEAN_WITH_BLANK_CHOICES
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
validation_minimum = forms.IntegerField(
|
||||||
|
label=_('Minimum value'),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
validation_maximum = forms.IntegerField(
|
||||||
|
label=_('Maximum value'),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
|
validation_regex = forms.CharField(
|
||||||
|
label=_('Validation regex'),
|
||||||
|
required=False
|
||||||
|
)
|
||||||
validation_unique = forms.NullBooleanField(
|
validation_unique = forms.NullBooleanField(
|
||||||
label=_('Must be unique'),
|
label=_('Must be unique'),
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -71,6 +71,15 @@ class CustomFieldTable(NetBoxTable):
|
|||||||
is_cloneable = columns.BooleanColumn(
|
is_cloneable = columns.BooleanColumn(
|
||||||
verbose_name=_('Is Cloneable'),
|
verbose_name=_('Is Cloneable'),
|
||||||
)
|
)
|
||||||
|
validation_minimum = tables.Column(
|
||||||
|
verbose_name=_('Minimum Value'),
|
||||||
|
)
|
||||||
|
validation_maximum = tables.Column(
|
||||||
|
verbose_name=_('Maximum Value'),
|
||||||
|
)
|
||||||
|
validation_regex = tables.Column(
|
||||||
|
verbose_name=_('Validation Regex'),
|
||||||
|
)
|
||||||
validation_unique = columns.BooleanColumn(
|
validation_unique = columns.BooleanColumn(
|
||||||
verbose_name=_('Validate Uniqueness'),
|
verbose_name=_('Validate Uniqueness'),
|
||||||
)
|
)
|
||||||
@ -80,7 +89,8 @@ class CustomFieldTable(NetBoxTable):
|
|||||||
fields = (
|
fields = (
|
||||||
'pk', 'id', 'name', 'object_types', 'label', 'type', 'related_object_type', 'group_name', 'required',
|
'pk', 'id', 'name', 'object_types', 'label', 'type', 'related_object_type', 'group_name', 'required',
|
||||||
'default', 'description', 'search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'is_cloneable',
|
'default', 'description', 'search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'is_cloneable',
|
||||||
'weight', 'choice_set', 'choices', 'validation_unique', 'comments', 'created', 'last_updated',
|
'weight', 'choice_set', 'choices', 'validation_minimum', 'validation_maximum', 'validation_regex',
|
||||||
|
'validation_unique', 'comments', 'created', 'last_updated',
|
||||||
)
|
)
|
||||||
default_columns = ('pk', 'name', 'object_types', 'label', 'group_name', 'type', 'required', 'description')
|
default_columns = ('pk', 'name', 'object_types', 'label', 'group_name', 'type', 'required', 'description')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user