summaryrefslogtreecommitdiffstats
path: root/ipalib/parameters.py
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 09:43:10 +0100
commit1f36ab1b780f488869f2880b79a3127840438cc9 (patch)
tree158fd3e0a40aa05260946728ae3711aa475bb308 /ipalib/parameters.py
parent52ea3a6b2958875da6370433d14509bdbd4c4943 (diff)
downloadfreeipa-1f36ab1b780f488869f2880b79a3127840438cc9.tar.gz
freeipa-1f36ab1b780f488869f2880b79a3127840438cc9.tar.xz
freeipa-1f36ab1b780f488869f2880b79a3127840438cc9.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/parameters.py')
-rw-r--r--ipalib/parameters.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 287304d3b..22144b7cb 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: