summaryrefslogtreecommitdiffstats
path: root/ipalib/public.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-28 18:31:06 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-28 18:31:06 +0000
commita6ec94da601273719e44c69c4d7c23776ab30f3a (patch)
tree9da8b0eaea911aa7a7aa86e1957feb450e1e5828 /ipalib/public.py
parent283c6f8fcec6a4687fd2cc99326a7f2b33e4e8bf (diff)
downloadfreeipa.git-a6ec94da601273719e44c69c4d7c23776ab30f3a.tar.gz
freeipa.git-a6ec94da601273719e44c69c4d7c23776ab30f3a.tar.xz
freeipa.git-a6ec94da601273719e44c69c4d7c23776ab30f3a.zip
217: Started work on new Option2 class that is more declarative and doesn't require subclassing from Option
Diffstat (limited to 'ipalib/public.py')
-rw-r--r--ipalib/public.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index 78d4a7a4..4c2a8dd2 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -27,6 +27,7 @@ import inspect
import plugable
from plugable import lock
import errors
+import ipa_types
RULE_FLAG = 'validation_rule'
@@ -83,6 +84,42 @@ class DefaultFrom(plugable.ReadOnly):
return None
+class Option2(plugable.ReadOnly):
+ def __init__(self, name, doc, type_, required=False, multivalue=False,
+ default=None, default_from=None, normalize=None, rules=tuple()
+ ):
+ self.name = name
+ self.doc = doc
+ self.type = type_
+ self.required = required
+ self.multivalue = multivalue
+ self.default = default
+ self.default_from = default_from
+ self.__normalize = normalize
+ self.rules = (type_.validate,) + rules
+ lock(self)
+
+ def validate_scalar(self, value):
+ for rule in self.rules:
+ msg = rule(value)
+ if msg is not None:
+ raise errors.RuleError(
+ self.__class__.__name__,
+ value,
+ rule,
+ msg,
+ )
+
+ def validate(self, value):
+ if self.multivalue:
+ if type(value) is not tuple:
+ value = (value,)
+ for v in value:
+ self.validate_scalar(v)
+ else:
+ self.validate_scalar(value)
+
+
class Option(plugable.Plugin):
"""
The Option class represents a kw argument from a `Command`.