summaryrefslogtreecommitdiffstats
path: root/ipalib/public.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-04 08:16:12 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-04 08:16:12 +0000
commit915486dadc476df4915cefdfeb8d61c43664ca60 (patch)
tree17621ba4e43f600be52f8044c8ba8ca5bfd7548a /ipalib/public.py
parentc7cd694d4f307e65f8e4cc5fb2e724e5f9700dea (diff)
downloadfreeipa.git-915486dadc476df4915cefdfeb8d61c43664ca60.tar.gz
freeipa.git-915486dadc476df4915cefdfeb8d61c43664ca60.tar.xz
freeipa.git-915486dadc476df4915cefdfeb8d61c43664ca60.zip
260: Option.normalize() now does same conversion for multivalue as Option.convert() does
Diffstat (limited to 'ipalib/public.py')
-rw-r--r--ipalib/public.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index cc385da1..d1f2ff35 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -127,15 +127,18 @@ class Option(plugable.ReadOnly):
def __normalize_scalar(self, value):
if not isinstance(value, basestring):
raise_TypeError(value, basestring, 'value')
- return self.__normalize(value)
+ try:
+ return self.__normalize(value)
+ except Exception:
+ return value
def normalize(self, value):
if self.__normalize is None:
return value
if self.multivalue:
- if type(value) is not tuple:
- raise_TypeError(value, tuple, 'value')
- return tuple(self.__normalize_scalar(v) for v in value)
+ if type(value) in (tuple, list):
+ return tuple(self.__normalize_scalar(v) for v in value)
+ return (self.__normalize_scalar(value),) # tuple
return self.__normalize_scalar(value)
def __validate_scalar(self, value, index=None):
@@ -170,8 +173,16 @@ class Option(plugable.ReadOnly):
return tuple()
def __call__(self, value, **kw):
- pass
-
+ if value in ('', tuple(), []):
+ value = None
+ if value is None:
+ value = self.get_default(**kw)
+ if value is None:
+ if self.required:
+ raise RequirementError(option.name)
+ return None
+ else:
+ pass
class Command(plugable.Plugin):