summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2012-01-06 15:33:22 +0100
committerMartin Kosek <mkosek@redhat.com>2012-01-12 10:45:27 +0100
commitbff9101a9fe8eecbe01d9aa33808363f6ed8b3fa (patch)
tree3a06bb1aacbc63343024b8343ab14f0884ad0f45 /ipalib
parentf8881bbb7410a1261e4375cd124cb88c9fb38627 (diff)
downloadfreeipa.git-bff9101a9fe8eecbe01d9aa33808363f6ed8b3fa.tar.gz
freeipa.git-bff9101a9fe8eecbe01d9aa33808363f6ed8b3fa.tar.xz
freeipa.git-bff9101a9fe8eecbe01d9aa33808363f6ed8b3fa.zip
Fix Parameter csv parsing
CSV values were not parsed in ipalib.parameters.normalize method properly when passed as a list and not as a basestring. Based on Jan Cholasta's contribution.
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/parameters.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 287304d3..22144b7c 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -711,11 +711,17 @@ class Param(ReadOnly):
:param value: A proposed value for this parameter.
"""
if self.multivalue:
- if self.csv and isinstance(value, basestring):
- csvreader = self.__unicode_csv_reader([unicode(value)])
- value = tuple(csvreader.next()) #pylint: disable=E1101
- elif type(value) not in (tuple, list):
+ if type(value) not in (tuple, list):
value = (value,)
+ if self.csv:
+ newval = ()
+ for v in value:
+ if isinstance(v, basestring):
+ csvreader = self.__unicode_csv_reader([unicode(v)])
+ newval += tuple(csvreader.next()) #pylint: disable=E1101
+ else:
+ newval += (v,)
+ value = newval
if self.normalizer is None:
return value
if self.multivalue: