Perform coercion in to_grams

This commit is contained in:
Brian Tiemann 2024-11-20 10:48:19 -05:00
parent 634634d65b
commit cb949283ea
2 changed files with 7 additions and 7 deletions

View File

@ -37,7 +37,7 @@ class WeightMixin(models.Model):
# Store the given weight (if any) in grams for use in database ordering
if self.weight and self.weight_unit:
self._abs_weight = int(to_grams(self.weight, self.weight_unit))
self._abs_weight = to_grams(self.weight, self.weight_unit)
else:
self._abs_weight = None

View File

@ -10,9 +10,9 @@ __all__ = (
)
def to_grams(weight, unit) -> float:
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) -> float:
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,