summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDariusz Smigiel <dariusz.smigiel@intel.com>2015-03-27 12:56:33 +0100
committerDariusz Smigiel <dariusz.smigiel@intel.com>2015-03-27 17:54:21 +0100
commit6a1dba03eeb32f4c30475c623173042fca77e6f1 (patch)
tree30978131b6fe165550366a6116064378a9d27128
parentb0494942f6e4e7a4e179a4b137c791bfc11de06b (diff)
downloadtuskar-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.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",
+ )