Browse Source

Fixes #444: Corrected prefix model validation

Jeremy Stretch 8 years ago
parent
commit
31ebbb3324
2 changed files with 9 additions and 12 deletions
  1. 2 6
      netbox/ipam/forms.py
  2. 7 6
      netbox/ipam/models.py

+ 2 - 6
netbox/ipam/forms.py

@@ -182,18 +182,14 @@ class PrefixForm(forms.ModelForm, BootstrapMixin):
             self.fields['vlan'].choices = []
 
     def clean_prefix(self):
-        data = self.cleaned_data['prefix']
-        try:
-            prefix = IPNetwork(data)
-        except:
-            raise
+        prefix = self.cleaned_data['prefix']
         if prefix.version == 4 and prefix.prefixlen == 32:
             raise forms.ValidationError("Cannot create host addresses (/32) as prefixes. These should be IPv4 "
                                         "addresses instead.")
         elif prefix.version == 6 and prefix.prefixlen == 128:
             raise forms.ValidationError("Cannot create host addresses (/128) as prefixes. These should be IPv6 "
                                         "addresses instead.")
-        return data
+        return prefix
 
 
 class PrefixFromCSVForm(forms.ModelForm):

+ 7 - 6
netbox/ipam/models.py

@@ -254,12 +254,13 @@ class Prefix(CreatedUpdatedModel):
 
     def clean(self):
         # Disallow host masks
-        if self.prefix.version == 4 and self.prefix.prefixlen == 32:
-            raise ValidationError("Cannot create host addresses (/32) as prefixes. These should be IPv4 addresses "
-                                  "instead.")
-        elif self.prefix.version == 6 and self.prefix.prefixlen == 128:
-            raise ValidationError("Cannot create host addresses (/128) as prefixes. These should be IPv6 addresses "
-                                  "instead.")
+        if self.prefix:
+            if self.prefix.version == 4 and self.prefix.prefixlen == 32:
+                raise ValidationError("Cannot create host addresses (/32) as prefixes. These should be IPv4 addresses "
+                                      "instead.")
+            elif self.prefix.version == 6 and self.prefix.prefixlen == 128:
+                raise ValidationError("Cannot create host addresses (/128) as prefixes. These should be IPv6 addresses "
+                                      "instead.")
 
     def save(self, *args, **kwargs):
         if self.prefix: