summaryrefslogtreecommitdiffstats
path: root/ipalib
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2009-01-05 02:45:07 -0700
committerJason Gerard DeRose <jderose@redhat.com>2009-01-05 02:45:07 -0700
commit690ad4766d9265026d46fcc50118f341776f81b0 (patch)
treedb61eceaf0fa4e681e0c847754f477ecbbec59b5 /ipalib
parent6d6c0d81ddbfc56672f0595a5f631c5e846d8b2b (diff)
downloadfreeipa-690ad4766d9265026d46fcc50118f341776f81b0.tar.gz
freeipa-690ad4766d9265026d46fcc50118f341776f81b0.tar.xz
freeipa-690ad4766d9265026d46fcc50118f341776f81b0.zip
New Param: added Str length rule methods; added corresponding unit tests
Diffstat (limited to 'ipalib')
-rw-r--r--ipalib/parameter.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/ipalib/parameter.py b/ipalib/parameter.py
index 357e3441c..204fda66f 100644
--- a/ipalib/parameter.py
+++ b/ipalib/parameter.py
@@ -556,3 +556,36 @@ class Str(Bytes):
raise TypeError(
'Can only implicitly convert int, float, or bool; got %r' % value
)
+
+ def _rule_minlength(self, _, name, value):
+ """
+ Check minlength constraint.
+ """
+ assert type(value) is unicode
+ if len(value) < self.minlength:
+ return _('%(name)s must be at least %(minlength)d characters') % dict(
+ name=name,
+ minlength=self.minlength,
+ )
+
+ def _rule_maxlength(self, _, name, value):
+ """
+ Check maxlength constraint.
+ """
+ assert type(value) is unicode
+ if len(value) > self.maxlength:
+ return _('%(name)s can be at most %(maxlength)d characters') % dict(
+ name=name,
+ maxlength=self.maxlength,
+ )
+
+ def _rule_length(self, _, name, value):
+ """
+ Check length constraint.
+ """
+ assert type(value) is unicode
+ if len(value) != self.length:
+ return _('%(name)s must be exactly %(length)d characters') % dict(
+ name=name,
+ length=self.length,
+ )