summaryrefslogtreecommitdiffstats
path: root/ipalib/parameters.py
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2010-07-27 16:35:23 -0400
committerRob Crittenden <rcritten@redhat.com>2010-08-06 15:32:37 -0400
commit2d7d047cbf9375a4c75196f13ac1e0c439ae9e8b (patch)
treec30749ec5472dcbfb54165ec5f0c28f87377fe08 /ipalib/parameters.py
parent252b73fb3ec3cfb6c5efb4b93db321eedd3745e1 (diff)
downloadfreeipa-2d7d047cbf9375a4c75196f13ac1e0c439ae9e8b.tar.gz
freeipa-2d7d047cbf9375a4c75196f13ac1e0c439ae9e8b.tar.xz
freeipa-2d7d047cbf9375a4c75196f13ac1e0c439ae9e8b.zip
Add optional error message to pattern validator
The pattern validator by default displays the pattern that is being matched against. This isn't helpful, particularly for very hairy patterns. This adds a new parameter, pattern_errmsg, that is displayed on errors if set. ticket #11
Diffstat (limited to 'ipalib/parameters.py')
-rw-r--r--ipalib/parameters.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index f97c42218..c86db758e 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -1082,6 +1082,7 @@ class Data(Param):
('maxlength', int, None),
('length', int, None),
('pattern', (basestring,), None),
+ ('pattern_errmsg', (basestring,), None),
)
def __init__(self, name, *rules, **kw):
@@ -1123,9 +1124,12 @@ class Data(Param):
"""
assert type(value) is self.type
if self.re.match(value) is None:
- return _('must match pattern "%(pattern)s"') % dict(
- pattern=self.pattern,
- )
+ if self.re_errmsg:
+ return self.re_errmsg % dict(pattern=self.pattern,)
+ else:
+ return _('must match pattern "%(pattern)s"') % dict(
+ pattern=self.pattern,
+ )
class Bytes(Data):
@@ -1148,6 +1152,7 @@ class Bytes(Data):
self.re = None
else:
self.re = re.compile(kw['pattern'])
+ self.re_errmsg = kw.get('pattern_errmsg', None)
super(Bytes, self).__init__(name, *rules, **kw)
def _rule_minlength(self, _, value):
@@ -1201,6 +1206,7 @@ class Str(Data):
self.re = None
else:
self.re = re.compile(kw['pattern'], re.UNICODE)
+ self.re_errmsg = kw.get('pattern_errmsg', None)
super(Str, self).__init__(name, *rules, **kw)
def _convert_scalar(self, value, index=None):