Merge "Remove duplicated MAC addresses from multi MAC field"

This commit is contained in:
Jenkins 2015-04-09 14:29:19 +00:00 committed by Gerrit Code Review
commit 761e79dae0
2 changed files with 22 additions and 9 deletions

View File

@ -97,15 +97,19 @@ class MultiMACField(forms.fields.Field):
def clean(self, value):
value = super(MultiMACField, self).clean(value)
try:
macs = []
for mac in SEPARATOR_RE.split(value):
if mac:
macs.append(normalize_MAC(mac))
return ' '.join(macs)
except ValueError:
raise forms.ValidationError(
_(u'%r is not a valid MAC address.') % mac)
macs = []
for mac in SEPARATOR_RE.split(value):
if mac:
try:
normalized_mac = normalize_MAC(mac)
except ValueError:
raise forms.ValidationError(
_(u'%r is not a valid MAC address.') % mac)
else:
macs.append(normalized_mac)
return ' '.join(sorted(set(macs)))
class NetworkField(forms.fields.Field):

View File

@ -57,3 +57,12 @@ class MultiMACFieldTests(test.TestCase):
"DE:AD:BE:EF:CA:FC DE:AD:BE:EF:CA:FD DE:AD:BE:EF:CA:FE "
"DE:AD:BE:EF:CA:FF",
)
def test_duplicated(self):
field = forms.MultiMACField(required=False)
cleaned = field.clean("DE:AD:BE:EF:CA:FC DE:AD:BE:EF:CA:FC")
self.assertEqual(
cleaned,
"DE:AD:BE:EF:CA:FC",
)