summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-09 14:29:19 +0000
committerGerrit Code Review <review@openstack.org>2015-04-09 14:29:19 +0000
commit761e79dae0f575e70e9b2973053113a568c33998 (patch)
tree2f13e135413acd0af4a5cfba5fa89db52ff43a23
parent1495b25bfc4fdf9d5b407be621f7e420ae2d164c (diff)
parent6a1dba03eeb32f4c30475c623173042fca77e6f1 (diff)
downloadtuskar-ui-761e79dae0f575e70e9b2973053113a568c33998.tar.gz
Merge "Remove duplicated MAC addresses from multi MAC field"
-rw-r--r--tuskar_ui/forms.py22
-rw-r--r--tuskar_ui/test/test_forms.py9
2 files changed, 22 insertions, 9 deletions
diff --git a/tuskar_ui/forms.py b/tuskar_ui/forms.py
index eb892fc3..e5aab204 100644
--- a/tuskar_ui/forms.py
+++ b/tuskar_ui/forms.py
@@ -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):
diff --git a/tuskar_ui/test/test_forms.py b/tuskar_ui/test/test_forms.py
index 0da52d70..9b9a0cd3 100644
--- a/tuskar_ui/test/test_forms.py
+++ b/tuskar_ui/test/test_forms.py
@@ -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",
+ )