Skip to content

Commit 8055fae

Browse files
Fixes #20865: Enforce proper min/max values for latitude & longitude (#20872)
1 parent aac3a51 commit 8055fae

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import django.core.validators
2+
from django.db import migrations, models
3+
4+
5+
class Migration(migrations.Migration):
6+
dependencies = [
7+
('dcim', '0215_rackreservation_status'),
8+
]
9+
10+
operations = [
11+
migrations.AlterField(
12+
model_name='device',
13+
name='latitude',
14+
field=models.DecimalField(
15+
blank=True,
16+
decimal_places=6,
17+
max_digits=8,
18+
null=True,
19+
validators=[
20+
django.core.validators.MinValueValidator(-90.0),
21+
django.core.validators.MaxValueValidator(90.0),
22+
],
23+
),
24+
),
25+
migrations.AlterField(
26+
model_name='device',
27+
name='longitude',
28+
field=models.DecimalField(
29+
blank=True,
30+
decimal_places=6,
31+
max_digits=9,
32+
null=True,
33+
validators=[
34+
django.core.validators.MinValueValidator(-180.0),
35+
django.core.validators.MaxValueValidator(180.0),
36+
],
37+
),
38+
),
39+
migrations.AlterField(
40+
model_name='site',
41+
name='latitude',
42+
field=models.DecimalField(
43+
blank=True,
44+
decimal_places=6,
45+
max_digits=8,
46+
null=True,
47+
validators=[
48+
django.core.validators.MinValueValidator(-90.0),
49+
django.core.validators.MaxValueValidator(90.0),
50+
],
51+
),
52+
),
53+
migrations.AlterField(
54+
model_name='site',
55+
name='longitude',
56+
field=models.DecimalField(
57+
blank=True,
58+
decimal_places=6,
59+
max_digits=9,
60+
null=True,
61+
validators=[
62+
django.core.validators.MinValueValidator(-180.0),
63+
django.core.validators.MaxValueValidator(180.0),
64+
],
65+
),
66+
),
67+
]

netbox/dcim/models/devices.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,7 @@ class Device(
646646
decimal_places=6,
647647
blank=True,
648648
null=True,
649+
validators=[MinValueValidator(-90.0), MaxValueValidator(90.0)],
649650
help_text=_("GPS coordinate in decimal format (xx.yyyyyy)")
650651
)
651652
longitude = models.DecimalField(
@@ -654,6 +655,7 @@ class Device(
654655
decimal_places=6,
655656
blank=True,
656657
null=True,
658+
validators=[MinValueValidator(-180.0), MaxValueValidator(180.0)],
657659
help_text=_("GPS coordinate in decimal format (xx.yyyyyy)")
658660
)
659661
services = GenericRelation(

netbox/dcim/models/sites.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.contrib.contenttypes.fields import GenericRelation
22
from django.core.exceptions import ValidationError
3+
from django.core.validators import MaxValueValidator, MinValueValidator
34
from django.db import models
45
from django.utils.translation import gettext_lazy as _
56
from timezone_field import TimeZoneField
@@ -210,6 +211,7 @@ class Site(ContactsMixin, ImageAttachmentsMixin, PrimaryModel):
210211
decimal_places=6,
211212
blank=True,
212213
null=True,
214+
validators=[MinValueValidator(-90.0), MaxValueValidator(90.0)],
213215
help_text=_('GPS coordinate in decimal format (xx.yyyyyy)')
214216
)
215217
longitude = models.DecimalField(
@@ -218,6 +220,7 @@ class Site(ContactsMixin, ImageAttachmentsMixin, PrimaryModel):
218220
decimal_places=6,
219221
blank=True,
220222
null=True,
223+
validators=[MinValueValidator(-180.0), MaxValueValidator(180.0)],
221224
help_text=_('GPS coordinate in decimal format (xx.yyyyyy)')
222225
)
223226

0 commit comments

Comments
 (0)