Skip to content

Commit 010fa37

Browse files
committed
Merge pull request jimfunk#22 from sbrandtb/fix_exc
Raise ValidationError instead of AddrFormatError
2 parents 0a3bdf2 + 0f81850 commit 010fa37

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

netfields/fields.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from netaddr import IPAddress, IPNetwork, EUI
2+
from netaddr.core import AddrFormatError
23

34
from django.db import models
5+
from django.core.exceptions import ValidationError
46

57
from netfields.managers import NET_OPERATORS, NET_TEXT_OPERATORS
68
from netfields.forms import InetAddressFormField, CidrAddressFormField, MACAddressFormField
@@ -18,7 +20,10 @@ def to_python(self, value):
1820
if not value:
1921
return value
2022

21-
return self.python_type()(value)
23+
try:
24+
return self.python_type()(value)
25+
except AddrFormatError as e:
26+
raise ValidationError(e)
2227

2328
def get_prep_lookup(self, lookup_type, value):
2429
if not value:
@@ -99,7 +104,10 @@ def to_python(self, value):
99104
if not value:
100105
return value
101106

102-
return EUI(value, dialect=mac_unix_common)
107+
try:
108+
return EUI(value, dialect=mac_unix_common)
109+
except AddrFormatError as e:
110+
raise ValidationError(e)
103111

104112
def get_prep_value(self, value):
105113
if not value:

netfields/tests.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.core.exceptions import ValidationError
12
from netaddr import IPAddress, IPNetwork, EUI, AddrFormatError
23

34
from django import VERSION
@@ -74,7 +75,7 @@ def test_save_object(self):
7475
self.model(field=self.value1).save()
7576

7677
def test_init_with_text_fails(self):
77-
self.assertRaises(AddrFormatError, self.model, field='abc')
78+
self.assertRaises(ValidationError, self.model, field='abc')
7879

7980
def test_iexact_lookup(self):
8081
self.assertSqlEquals(self.qs.filter(field__iexact=self.value1),
@@ -387,6 +388,9 @@ def test_save_none(self):
387388
def test_save_nothing_fails(self):
388389
self.model().save()
389390

391+
def test_invalid_fails(self):
392+
self.assertRaises(ValidationError, self.model(field='foobar').save)
393+
390394

391395
class MacAddressTestModelForm(ModelForm):
392396
class Meta:

0 commit comments

Comments
 (0)