From 767dfccd8f7b0f1f6597fc8005ab2eae2fe35faf Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 1 Dec 2025 13:35:44 -0500 Subject: [PATCH] Fixes #20888: Pass decimal values for min/max on latitude and longitude fields (#20892) --- .../0216_latitude_longitude_validators.py | 18 ++++++++++-------- netbox/dcim/models/devices.py | 10 ++++++++-- netbox/dcim/models/sites.py | 12 ++++++++++-- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/netbox/dcim/migrations/0216_latitude_longitude_validators.py b/netbox/dcim/migrations/0216_latitude_longitude_validators.py index 2621d5019..e3bd2ca78 100644 --- a/netbox/dcim/migrations/0216_latitude_longitude_validators.py +++ b/netbox/dcim/migrations/0216_latitude_longitude_validators.py @@ -1,3 +1,5 @@ +import decimal + import django.core.validators from django.db import migrations, models @@ -17,8 +19,8 @@ class Migration(migrations.Migration): max_digits=8, null=True, validators=[ - django.core.validators.MinValueValidator(-90.0), - django.core.validators.MaxValueValidator(90.0), + django.core.validators.MinValueValidator(decimal.Decimal('-90.0')), + django.core.validators.MaxValueValidator(decimal.Decimal('90.0')) ], ), ), @@ -31,8 +33,8 @@ class Migration(migrations.Migration): max_digits=9, null=True, validators=[ - django.core.validators.MinValueValidator(-180.0), - django.core.validators.MaxValueValidator(180.0), + django.core.validators.MinValueValidator(decimal.Decimal('-180.0')), + django.core.validators.MaxValueValidator(decimal.Decimal('180.0')) ], ), ), @@ -45,8 +47,8 @@ class Migration(migrations.Migration): max_digits=8, null=True, validators=[ - django.core.validators.MinValueValidator(-90.0), - django.core.validators.MaxValueValidator(90.0), + django.core.validators.MinValueValidator(decimal.Decimal('-90.0')), + django.core.validators.MaxValueValidator(decimal.Decimal('90.0')) ], ), ), @@ -59,8 +61,8 @@ class Migration(migrations.Migration): max_digits=9, null=True, validators=[ - django.core.validators.MinValueValidator(-180.0), - django.core.validators.MaxValueValidator(180.0), + django.core.validators.MinValueValidator(decimal.Decimal('-180.0')), + django.core.validators.MaxValueValidator(decimal.Decimal('180.0')) ], ), ), diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 6d05d80b9..64d2e346c 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -646,7 +646,10 @@ class Device( decimal_places=6, blank=True, null=True, - validators=[MinValueValidator(-90.0), MaxValueValidator(90.0)], + validators=[ + MinValueValidator(decimal.Decimal('-90.0')), + MaxValueValidator(decimal.Decimal('90.0')) + ], help_text=_("GPS coordinate in decimal format (xx.yyyyyy)") ) longitude = models.DecimalField( @@ -655,7 +658,10 @@ class Device( decimal_places=6, blank=True, null=True, - validators=[MinValueValidator(-180.0), MaxValueValidator(180.0)], + validators=[ + MinValueValidator(decimal.Decimal('-180.0')), + MaxValueValidator(decimal.Decimal('180.0')) + ], help_text=_("GPS coordinate in decimal format (xx.yyyyyy)") ) services = GenericRelation( diff --git a/netbox/dcim/models/sites.py b/netbox/dcim/models/sites.py index f9aa47874..d18c22c7e 100644 --- a/netbox/dcim/models/sites.py +++ b/netbox/dcim/models/sites.py @@ -1,3 +1,5 @@ +import decimal + from django.contrib.contenttypes.fields import GenericRelation from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator @@ -211,7 +213,10 @@ class Site(ContactsMixin, ImageAttachmentsMixin, PrimaryModel): decimal_places=6, blank=True, null=True, - validators=[MinValueValidator(-90.0), MaxValueValidator(90.0)], + validators=[ + MinValueValidator(decimal.Decimal('-90.0')), + MaxValueValidator(decimal.Decimal('90.0')) + ], help_text=_('GPS coordinate in decimal format (xx.yyyyyy)') ) longitude = models.DecimalField( @@ -220,7 +225,10 @@ class Site(ContactsMixin, ImageAttachmentsMixin, PrimaryModel): decimal_places=6, blank=True, null=True, - validators=[MinValueValidator(-180.0), MaxValueValidator(180.0)], + validators=[ + MinValueValidator(decimal.Decimal('-180.0')), + MaxValueValidator(decimal.Decimal('180.0')) + ], help_text=_('GPS coordinate in decimal format (xx.yyyyyy)') )