summaryrefslogtreecommitdiffstats
path: root/ipalib/parameters.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2009-01-18 15:55:56 -0700
committerJason Gerard DeRose <jderose@redhat.com>2009-01-18 15:55:56 -0700
commit364e05def194b80714a5ea2a3e89598db9fb4892 (patch)
tree609f455c0acc7e993155bb61749583697208d957 /ipalib/parameters.py
parent7514f96173575c42c2f5592034211d19ff711a02 (diff)
downloadfreeipa-364e05def194b80714a5ea2a3e89598db9fb4892.tar.gz
freeipa-364e05def194b80714a5ea2a3e89598db9fb4892.tar.xz
freeipa-364e05def194b80714a5ea2a3e89598db9fb4892.zip
Added missing enumerable parameters
Diffstat (limited to 'ipalib/parameters.py')
-rw-r--r--ipalib/parameters.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index fd693e71d..0d764d60a 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -898,6 +898,47 @@ class Password(Str):
"""
+class Enum(Param):
+ """
+ Base class for parameters with enumerable values.
+ """
+
+ kwargs = Param.kwargs + (
+ ('values', tuple, tuple()),
+ )
+
+ def __init__(self, name, *rules, **kw):
+ super(Enum, self).__init__(name, *rules, **kw)
+ for (i, v) in enumerate(self.values):
+ if type(v) is not self.type:
+ n = '%s values[%d]' % (self.nice, i)
+ raise TypeError(
+ TYPE_ERROR % (n, self.type, v, type(v))
+ )
+
+ def _rule_values(self, _, value, **kw):
+ if value not in self.values:
+ return _('must be one of %(values)r') % dict(
+ values=self.values,
+ )
+
+
+class BytesEnum(Enum):
+ """
+ Enumerable for binary data (stored in the ``str`` type).
+ """
+
+ type = unicode
+
+
+class StrEnum(Enum):
+ """
+ Enumerable for Unicode text (stored in the ``unicode`` type).
+ """
+
+ type = unicode
+
+
def create_param(spec):
"""
Create an `Str` instance from the shorthand ``spec``.