From e36f23ed03623546f9c5bb4afb4c59bd36f942a9 Mon Sep 17 00:00:00 2001 From: bctiemann Date: Wed, 20 Nov 2024 14:33:50 -0500 Subject: [PATCH] Fixes: #18038 - Ensure DeviceType._abs_weight is stored as an integer (#18039) * Coerce _abs_weight to int to prevent disagreement with PositiveBigIntegerField deserialization * Perform coercion in to_grams --- netbox/utilities/conversion.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/netbox/utilities/conversion.py b/netbox/utilities/conversion.py index cd75c3c17..07e57d96e 100644 --- a/netbox/utilities/conversion.py +++ b/netbox/utilities/conversion.py @@ -10,9 +10,9 @@ __all__ = ( ) -def to_grams(weight, unit): +def to_grams(weight, unit) -> int: """ - Convert the given weight to kilograms. + Convert the given weight to integer grams. """ try: if weight < 0: @@ -21,13 +21,13 @@ def to_grams(weight, unit): raise TypeError(_("Invalid value '{weight}' for weight (must be a number)").format(weight=weight)) if unit == WeightUnitChoices.UNIT_KILOGRAM: - return weight * 1000 + return int(weight * 1000) if unit == WeightUnitChoices.UNIT_GRAM: - return weight + return int(weight) if unit == WeightUnitChoices.UNIT_POUND: - return weight * Decimal(453.592) + return int(weight * Decimal(453.592)) if unit == WeightUnitChoices.UNIT_OUNCE: - return weight * Decimal(28.3495) + return int(weight * Decimal(28.3495)) raise ValueError( _("Unknown unit {unit}. Must be one of the following: {valid_units}").format( unit=unit,