diff options
author | Dariusz Smigiel <dariusz.smigiel@intel.com> | 2015-03-27 12:56:33 +0100 |
---|---|---|
committer | Dariusz Smigiel <dariusz.smigiel@intel.com> | 2015-03-27 17:54:21 +0100 |
commit | 6a1dba03eeb32f4c30475c623173042fca77e6f1 (patch) | |
tree | 30978131b6fe165550366a6116064378a9d27128 | |
parent | b0494942f6e4e7a4e179a4b137c791bfc11de06b (diff) | |
download | tuskar-ui-6a1dba03eeb32f4c30475c623173042fca77e6f1.tar.gz |
Remove duplicated MAC addresses from multi MAC field
While adding new nodes, there is possibility to paste duplicated addresses in
multi MAC field. Check if this situation occurred, and remove duplication.
Closes-Bug: 1437212
Change-Id: I02436ce6db1b7ce42b98dbb18c1e96b4452db222
-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", + ) |