diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-09 14:29:19 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-09 14:29:19 +0000 |
commit | 761e79dae0f575e70e9b2973053113a568c33998 (patch) | |
tree | 2f13e135413acd0af4a5cfba5fa89db52ff43a23 | |
parent | 1495b25bfc4fdf9d5b407be621f7e420ae2d164c (diff) | |
parent | 6a1dba03eeb32f4c30475c623173042fca77e6f1 (diff) | |
download | tuskar-ui-761e79dae0f575e70e9b2973053113a568c33998.tar.gz |
Merge "Remove duplicated MAC addresses from multi MAC field"
-rw-r--r-- | tuskar_ui/forms.py | 22 | ||||
-rw-r--r-- | tuskar_ui/test/test_forms.py | 9 |
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", + ) |