diff options
author | Martin Kosek <mkosek@redhat.com> | 2012-01-06 15:33:22 +0100 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-01-12 09:43:10 +0100 |
commit | 1f36ab1b780f488869f2880b79a3127840438cc9 (patch) | |
tree | 158fd3e0a40aa05260946728ae3711aa475bb308 /ipalib/parameters.py | |
parent | 52ea3a6b2958875da6370433d14509bdbd4c4943 (diff) | |
download | freeipa-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.py | 14 |
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: |