From 1560fff2af1823f3b17355443e33cc3d39ae1a92 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 21 Jun 2024 14:35:41 -0700 Subject: [PATCH] 9627 update validation --- netbox/ipam/models/vlans.py | 8 +++++++- netbox/utilities/data.py | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index 44d81ecef..43e190e5c 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -98,7 +98,13 @@ class VLANGroup(OrganizationalModel): # Validate vlan ranges if check_ranges_overlap(self.vlan_id_ranges): - raise ValidationError(_("Ranges cannot overlap.")) + raise ValidationError({'vlan_id_ranges': _("Ranges cannot overlap.")}) + + for ranges in self.vlan_id_ranges: + if ranges.lower >= ranges.upper: + raise ValidationError({ + 'vlan_id_ranges': _("Maximum child VID must be greater than or equal to minimum child VID Invalid range ({value})").format(value=ranges) + }) def save(self, *args, **kwargs): self._total_vlan_ids = 0 diff --git a/netbox/utilities/data.py b/netbox/utilities/data.py index a10a01230..d6d889694 100644 --- a/netbox/utilities/data.py +++ b/netbox/utilities/data.py @@ -140,6 +140,9 @@ def ranges_to_string(ranges): For example: [1-100, 200-300] => "1-100, 200-300" """ + if not ranges: + return "" + return ', '.join([f"{val.lower}-{val.upper}" for val in ranges])