diff options
author | Martin Kosek <mkosek@redhat.com> | 2012-01-06 15:33:22 +0100 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-01-12 10:45:27 +0100 |
commit | bff9101a9fe8eecbe01d9aa33808363f6ed8b3fa (patch) | |
tree | 3a06bb1aacbc63343024b8343ab14f0884ad0f45 /ipalib | |
parent | f8881bbb7410a1261e4375cd124cb88c9fb38627 (diff) | |
download | freeipa.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.py | 14 |
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: |