From 5aee17e998af4aa8f4990a25e48b9bb90710f327 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 14 Mar 2022 11:20:36 -0400 Subject: [PATCH] Fix bulk editing --- netbox/utilities/forms/fields.py | 35 +++++++++++++------------------ netbox/utilities/forms/widgets.py | 6 +++--- netbox/virtualization/choices.py | 3 ++- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py index 661242c38..a84ee6695 100644 --- a/netbox/utilities/forms/fields.py +++ b/netbox/utilities/forms/fields.py @@ -154,36 +154,31 @@ class MACAddressField(forms.Field): class MemoryField(forms.MultiValueField): widget = widgets.MemoryWidget - empty_values = ['', 'gb', 'mb', 'tb'] + MULTIPLIERS = { + MemoryUnitChoices.UNIT_MB: 1024**0, + MemoryUnitChoices.UNIT_GB: 1024**1, + MemoryUnitChoices.UNIT_TB: 1024**2, + } def __init__(self, **kwargs): fields = ( forms.IntegerField(required=False), - forms.CharField(required=False), + forms.ChoiceField( + choices=MemoryUnitChoices.CHOICES, + required=False + ), ) super(MemoryField, self).__init__( fields=fields, required=False, require_all_fields=False, **kwargs ) - - def compress(self, data): + + @classmethod + def compress(cls, data): if data: - value = data[0] - unit = data[1] - - defs = { - 'gb': 1024**1, - 'tb': 1024**2, - } - if value: - if unit != MemoryUnitChoices.UNIT_MB: - return value * defs[unit] - else: - return value - - - - + size, unit = data + if size: + return size * cls.MULTIPLIERS[unit] # diff --git a/netbox/utilities/forms/widgets.py b/netbox/utilities/forms/widgets.py index 4625d7939..586241885 100644 --- a/netbox/utilities/forms/widgets.py +++ b/netbox/utilities/forms/widgets.py @@ -319,11 +319,11 @@ class MemoryWidget(forms.MultiWidget): Memory Widget. """ def __init__(self, attrs=None): - widget = ( + widgets = ( forms.NumberInput(), - StaticSelect(choices=MemoryUnitChoices.choices) + StaticSelect(choices=add_blank_choice(MemoryUnitChoices.CHOICES)) ) - super(MemoryWidget, self).__init__(widget, attrs) + super(MemoryWidget, self).__init__(widgets, attrs) def decompress(self, value): if value: diff --git a/netbox/virtualization/choices.py b/netbox/virtualization/choices.py index 43471beef..20da8e3be 100644 --- a/netbox/virtualization/choices.py +++ b/netbox/virtualization/choices.py @@ -10,12 +10,13 @@ class MemoryUnitChoices(ChoiceSet): UNIT_GB = 'gb' UNIT_TB = 'tb' - choices = ( + CHOICES = ( (UNIT_MB, 'MB'), (UNIT_GB, 'GB'), (UNIT_TB, 'TB'), ) + class VirtualMachineStatusChoices(ChoiceSet): STATUS_OFFLINE = 'offline'