From cf8ee16ae1eeb981debcbabea177172e6aea7bd7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 20 Sep 2022 07:59:38 -0700 Subject: [PATCH] 10348 add decimal custom field --- netbox/extras/api/serializers.py | 2 ++ netbox/extras/choices.py | 2 ++ netbox/extras/models/customfields.py | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index 764c7750a..fd774f8ff 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -99,6 +99,8 @@ class CustomFieldSerializer(ValidatedModelSerializer): types = CustomFieldTypeChoices if obj.type == types.TYPE_INTEGER: return 'integer' + if obj.type == types.TYPE_DECIMAL: + return 'decimal' if obj.type == types.TYPE_BOOLEAN: return 'boolean' if obj.type in (types.TYPE_JSON, types.TYPE_OBJECT): diff --git a/netbox/extras/choices.py b/netbox/extras/choices.py index 123fd2cd4..5afe9f33f 100644 --- a/netbox/extras/choices.py +++ b/netbox/extras/choices.py @@ -10,6 +10,7 @@ class CustomFieldTypeChoices(ChoiceSet): TYPE_TEXT = 'text' TYPE_LONGTEXT = 'longtext' TYPE_INTEGER = 'integer' + TYPE_DECIMAL = 'decimal' TYPE_BOOLEAN = 'boolean' TYPE_DATE = 'date' TYPE_URL = 'url' @@ -23,6 +24,7 @@ class CustomFieldTypeChoices(ChoiceSet): (TYPE_TEXT, 'Text'), (TYPE_LONGTEXT, 'Text (long)'), (TYPE_INTEGER, 'Integer'), + (TYPE_DECIMAL, 'Decimal'), (TYPE_BOOLEAN, 'Boolean (true/false)'), (TYPE_DATE, 'Date'), (TYPE_URL, 'URL'), diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index 43c4f9671..0cbfcc909 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -317,6 +317,15 @@ class CustomField(CloningMixin, ExportTemplatesMixin, WebhooksMixin, ChangeLogge max_value=self.validation_maximum ) + # Decimal + if self.type == CustomFieldTypeChoices.TYPE_DECIMAL: + field = forms.DecimalField( + required=required, + initial=initial, + max_digits=10, + decimal_places=2, + ) + # Boolean elif self.type == CustomFieldTypeChoices.TYPE_BOOLEAN: choices = (