From 12750da341e7508f48b5834014fd578dbceb5553 Mon Sep 17 00:00:00 2001 From: klasswell Date: Mon, 28 Jul 2025 08:53:49 -0500 Subject: [PATCH] add DecimalVar class --- netbox/extras/scripts.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index f96066fb1..420ef4882 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -31,6 +31,7 @@ __all__ = ( 'DateTimeVar', 'FileVar', 'IntegerVar', + 'DecimalVar', 'IPAddressVar', 'IPAddressWithMaskVar', 'IPNetworkVar', @@ -135,6 +136,26 @@ class IntegerVar(ScriptVariable): self.field_attrs['max_value'] = max_value +class DecimalVar(ScriptVariable): + """ + Decimal representation. Can enforce minimum/maximum values, maximum digits and decimal places. + """ + form_field = forms.DecimalField + + def __init__(self, min_value=None, max_value=None, max_digits=None, decimal_places=None, *args, **kwargs,): + super().__init__(*args, **kwargs) + + # Optional constraints + if min_value: + self.field_attrs["min_value"] = min_value + if max_value: + self.field_attrs["max_value"] = max_value + if max_digits: + self.field_attrs["max_digits"] = max_digits + if decimal_places: + self.field_attrs["decimal_places"] = decimal_places + + class BooleanVar(ScriptVariable): """ Boolean representation (true/false). Renders as a checkbox.