diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2009-01-18 15:55:56 -0700 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2009-01-18 15:55:56 -0700 |
commit | 364e05def194b80714a5ea2a3e89598db9fb4892 (patch) | |
tree | 609f455c0acc7e993155bb61749583697208d957 /ipalib/parameters.py | |
parent | 7514f96173575c42c2f5592034211d19ff711a02 (diff) | |
download | freeipa-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.py | 41 |
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``. |