From 690ad4766d9265026d46fcc50118f341776f81b0 Mon Sep 17 00:00:00 2001 From: Jason Gerard DeRose Date: Mon, 5 Jan 2009 02:45:07 -0700 Subject: New Param: added Str length rule methods; added corresponding unit tests --- ipalib/parameter.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'ipalib/parameter.py') diff --git a/ipalib/parameter.py b/ipalib/parameter.py index 357e3441..204fda66 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, + ) -- cgit