Skip to content

Commit

Permalink
Fixes: #18038 - Ensure DeviceType._abs_weight is stored as an integer (
Browse files Browse the repository at this point in the history
…#18039)

* Coerce _abs_weight to int to prevent disagreement with PositiveBigIntegerField deserialization

* Perform coercion in to_grams
  • Loading branch information
bctiemann authored Nov 20, 2024
1 parent 13bd2ed commit e36f23e
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions netbox/utilities/conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
)


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:
Expand All @@ -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,
Expand Down

0 comments on commit e36f23e

Please sign in to comment.