From fadbae642053565be1d10bc5d6b40b151a97ff16 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Thu, 7 Aug 2008 03:38:49 +0000 Subject: 72: Started work on public.opt class; added corresponding unit tests --- ipalib/public.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'ipalib/public.py') diff --git a/ipalib/public.py b/ipalib/public.py index e6cd278a..5806d0eb 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -24,10 +24,35 @@ and UI all use. import re import plugable +import errors + + +class opt(plugable.ReadOnly): + __public__ = frozenset(( + 'normalize', + 'validate', + 'default', + 'required', + 'type', + )) + + def normalize(self, value): + try: + return self.type(value) + except (TypeError, ValueError): + raise errors.NormalizationError( + self.__class__.__name__, value, self.type + ) + + + + class cmd(plugable.Plugin): __public__ = frozenset(( + 'normalize', + 'autofill', '__call__', 'get_doc', 'opt', @@ -63,7 +88,10 @@ class cmd(plugable.Plugin): opt = property(__get_opt) def __call__(self, *args, **kw): - print repr(self) + (args, kw) = self.normalize(*args, **kw) + (args, kw) = self.autofill(*args, **kw) + self.validate(*args, **kw) + class obj(plugable.Plugin): -- cgit