2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-28 11:36:44 +00:00

Parameter value bug (#7601)

* Handle out-of range numerical values

* Add unit test
This commit is contained in:
Oliver 2024-07-09 21:39:06 +10:00 committed by GitHub
parent 494c12f0e5
commit 84d076848a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 0 deletions

View File

@ -5,6 +5,7 @@ from __future__ import annotations
import decimal import decimal
import hashlib import hashlib
import logging import logging
import math
import os import os
import re import re
from datetime import timedelta from datetime import timedelta
@ -3820,6 +3821,12 @@ class PartParameter(InvenTree.models.InvenTreeMetadataModel):
except ValueError: except ValueError:
self.data_numeric = None self.data_numeric = None
if self.data_numeric is not None and type(self.data_numeric) is float:
# Prevent out of range numbers, etc
# Ref: https://github.com/inventree/InvenTree/issues/7593
if math.isnan(self.data_numeric) or math.isinf(self.data_numeric):
self.data_numeric = None
part = models.ForeignKey( part = models.ForeignKey(
Part, Part,
on_delete=models.CASCADE, on_delete=models.CASCADE,

View File

@ -47,6 +47,25 @@ class TestParams(TestCase):
t3.full_clean() t3.full_clean()
t3.save() # pragma: no cover t3.save() # pragma: no cover
def test_invalid_numbers(self):
"""Test that invalid floating point numbers are correctly handled."""
p = Part.objects.first()
t = PartParameterTemplate.objects.create(name='Yaks')
valid_floats = ['-12', '1.234', '17', '3e45', '-12e34']
for value in valid_floats:
param = PartParameter(part=p, template=t, data=value)
param.full_clean()
self.assertIsNotNone(param.data_numeric)
invalid_floats = ['88E6352', 'inf', '-inf', 'nan', '3.14.15', '3eee3']
for value in invalid_floats:
param = PartParameter(part=p, template=t, data=value)
param.full_clean()
self.assertIsNone(param.data_numeric)
def test_metadata(self): def test_metadata(self):
"""Unit tests for the metadata field.""" """Unit tests for the metadata field."""
for model in [PartParameterTemplate]: for model in [PartParameterTemplate]: