You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

31 lines
962 B

from django.forms import Field
from django.forms.fields import EMPTY_VALUES
#"From Django 1.8: The django.forms.util module has been renamed. Use django.forms.utils instead."
try:
from django.forms.utils import ValidationError
except ImportError:
from django.forms.util import ValidationError
from netaddr import EUI, AddrFormatError
class MACAddressField(Field):
default_error_messages = {
'invalid': 'Enter a valid MAC Address.',
}
def clean(self, value):
"""
Validates that EUI() can be called on the input. Returns the result
of EUI(). Returns None for empty values.
"""
value = super(MACAddressField, self).clean(value)
if value in EMPTY_VALUES:
return None
try:
value = EUI(str(value), version=48)
except (ValueError, TypeError, AddrFormatError):
raise ValidationError(self.error_messages['invalid'])
return value