mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 01:48:38 -06:00
* Disallow changing customfield type after creation * Fix test_api.CustomFieldTest --------- Co-authored-by: kkthxbye-code <>
This commit is contained in:
parent
768d6f624e
commit
278f2b173a
@ -97,6 +97,12 @@ class CustomFieldSerializer(ValidatedModelSerializer):
|
|||||||
'validation_minimum', 'validation_maximum', 'validation_regex', 'choices', 'created', 'last_updated',
|
'validation_minimum', 'validation_maximum', 'validation_regex', 'choices', 'created', 'last_updated',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def validate_type(self, value):
|
||||||
|
if self.instance and self.instance.type != value:
|
||||||
|
raise serializers.ValidationError('Changing the type of custom fields is not supported.')
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
def get_data_type(self, obj):
|
def get_data_type(self, obj):
|
||||||
types = CustomFieldTypeChoices
|
types = CustomFieldTypeChoices
|
||||||
if obj.type == types.TYPE_INTEGER:
|
if obj.type == types.TYPE_INTEGER:
|
||||||
|
@ -64,6 +64,13 @@ class CustomFieldForm(BootstrapMixin, forms.ModelForm):
|
|||||||
'ui_visibility': StaticSelect(),
|
'ui_visibility': StaticSelect(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# Disable changing the type of a CustomField as it almost universally causes errors if custom field data is already present.
|
||||||
|
if self.instance.pk:
|
||||||
|
self.fields['type'].disabled = True
|
||||||
|
|
||||||
|
|
||||||
class CustomLinkForm(BootstrapMixin, forms.ModelForm):
|
class CustomLinkForm(BootstrapMixin, forms.ModelForm):
|
||||||
content_types = ContentTypeMultipleChoiceField(
|
content_types = ContentTypeMultipleChoiceField(
|
||||||
|
@ -102,6 +102,11 @@ class CustomFieldTest(APIViewTestCases.APIViewTestCase):
|
|||||||
bulk_update_data = {
|
bulk_update_data = {
|
||||||
'description': 'New description',
|
'description': 'New description',
|
||||||
}
|
}
|
||||||
|
update_data = {
|
||||||
|
'content_types': ['dcim.device'],
|
||||||
|
'name': 'New_Name',
|
||||||
|
'description': 'New description',
|
||||||
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
Loading…
Reference in New Issue
Block a user