Merge pull request #351 from kirsn/master

Update error_messages; capitalize first character
This commit is contained in:
mdipierro
2014-01-18 10:36:33 -08:00
+39 -39
View File
@@ -122,7 +122,7 @@ class Validator(object):
message which allows you to change the default error message. message which allows you to change the default error message.
Here is an example of a validator on a database table:: Here is an example of a validator on a database table::
db.person.name.requires=IS_NOT_EMPTY(error_message=T('fill this')) db.person.name.requires=IS_NOT_EMPTY(error_message=T('Fill this'))
where we have used the translation operator T to allow for where we have used the translation operator T to allow for
internationalization. internationalization.
@@ -175,7 +175,7 @@ class IS_MATCH(Validator):
('', 'invalid expression') ('', 'invalid expression')
""" """
def __init__(self, expression, error_message='invalid expression', def __init__(self, expression, error_message='Invalid expression',
strict=False, search=False, extract=False, strict=False, search=False, extract=False,
is_unicode=False): is_unicode=False):
@@ -222,7 +222,7 @@ class IS_EQUAL_TO(Validator):
('aab', 'no match') ('aab', 'no match')
""" """
def __init__(self, expression, error_message='no match'): def __init__(self, expression, error_message='No match'):
self.expression = expression self.expression = expression
self.error_message = error_message self.error_message = error_message
@@ -248,7 +248,7 @@ class IS_EXPR(Validator):
('2', 'invalid expression') ('2', 'invalid expression')
""" """
def __init__(self, expression, error_message='invalid expression', environment=None): def __init__(self, expression, error_message='Invalid expression', environment=None):
self.expression = expression self.expression = expression
self.error_message = error_message self.error_message = error_message
self.environment = environment or {} self.environment = environment or {}
@@ -296,7 +296,7 @@ class IS_LENGTH(Validator):
""" """
def __init__(self, maxsize=255, minsize=0, def __init__(self, maxsize=255, minsize=0,
error_message='enter from %(min)g to %(max)g characters'): error_message='Enter from %(min)g to %(max)g characters'):
self.maxsize = maxsize self.maxsize = maxsize
self.minsize = minsize self.minsize = minsize
self.error_message = error_message self.error_message = error_message
@@ -350,7 +350,7 @@ class IS_JSON(Validator):
('spam1234', 'invalid json') ('spam1234', 'invalid json')
""" """
def __init__(self, error_message='invalid json', native_json=False): def __init__(self, error_message='Invalid json', native_json=False):
self.native_json = native_json self.native_json = native_json
self.error_message = error_message self.error_message = error_message
@@ -401,7 +401,7 @@ class IS_IN_SET(Validator):
self, self,
theset, theset,
labels=None, labels=None,
error_message='value not allowed', error_message='Value not allowed',
multiple=False, multiple=False,
zero='', zero='',
sort=False, sort=False,
@@ -476,7 +476,7 @@ class IS_IN_DB(Validator):
dbset, dbset,
field, field,
label=None, label=None,
error_message='value not in database', error_message='Value not in database',
orderby=None, orderby=None,
groupby=None, groupby=None,
distinct=None, distinct=None,
@@ -622,7 +622,7 @@ class IS_NOT_IN_DB(Validator):
self, self,
dbset, dbset,
field, field,
error_message='value already in database or empty', error_message='Value already in database or empty',
allowed_override=[], allowed_override=[],
ignore_common_filters=False, ignore_common_filters=False,
): ):
@@ -674,7 +674,7 @@ class IS_NOT_IN_DB(Validator):
def range_error_message(error_message, what_to_enter, minimum, maximum): def range_error_message(error_message, what_to_enter, minimum, maximum):
"build the error message for the number range validators" "build the error message for the number range validators"
if error_message is None: if error_message is None:
error_message = 'enter ' + what_to_enter error_message = 'Enter ' + what_to_enter
if minimum is not None and maximum is not None: if minimum is not None and maximum is not None:
error_message += ' between %(min)g and %(max)g' error_message += ' between %(min)g and %(max)g'
elif minimum is not None: elif minimum is not None:
@@ -953,7 +953,7 @@ class IS_NOT_EMPTY(Validator):
('abc', None) ('abc', None)
""" """
def __init__(self, error_message='enter a value', empty_regex=None): def __init__(self, error_message='Enter a value', empty_regex=None):
self.error_message = error_message self.error_message = error_message
if empty_regex is not None: if empty_regex is not None:
self.empty_regex = re.compile(empty_regex) self.empty_regex = re.compile(empty_regex)
@@ -983,7 +983,7 @@ class IS_ALPHANUMERIC(IS_MATCH):
('!', 'enter only letters, numbers, and underscore') ('!', 'enter only letters, numbers, and underscore')
""" """
def __init__(self, error_message='enter only letters, numbers, and underscore'): def __init__(self, error_message='Enter only letters, numbers, and underscore'):
IS_MATCH.__init__(self, '^[\w]*$', error_message) IS_MATCH.__init__(self, '^[\w]*$', error_message)
@@ -1105,7 +1105,7 @@ class IS_EMAIL(Validator):
def __init__(self, def __init__(self,
banned=None, banned=None,
forced=None, forced=None,
error_message='enter a valid email address'): error_message='Enter a valid email address'):
if isinstance(banned, str): if isinstance(banned, str):
banned = re.compile(banned) banned = re.compile(banned)
if isinstance(forced, str): if isinstance(forced, str):
@@ -1471,7 +1471,7 @@ class IS_GENERIC_URL(Validator):
def __init__( def __init__(
self, self,
error_message='enter a valid URL', error_message='Enter a valid URL',
allowed_schemes=None, allowed_schemes=None,
prepend_scheme=None, prepend_scheme=None,
): ):
@@ -1889,7 +1889,7 @@ class IS_HTTP_URL(Validator):
def __init__( def __init__(
self, self,
error_message='enter a valid URL', error_message='Enter a valid URL',
allowed_schemes=None, allowed_schemes=None,
prepend_scheme='http', prepend_scheme='http',
): ):
@@ -2058,7 +2058,7 @@ class IS_URL(Validator):
def __init__( def __init__(
self, self,
error_message='enter a valid URL', error_message='Enter a valid URL',
mode='http', mode='http',
allowed_schemes=None, allowed_schemes=None,
prepend_scheme='http', prepend_scheme='http',
@@ -2174,7 +2174,7 @@ class IS_TIME(Validator):
('', 'enter time as hh:mm:ss (seconds, am, pm optional)') ('', 'enter time as hh:mm:ss (seconds, am, pm optional)')
""" """
def __init__(self, error_message='enter time as hh:mm:ss (seconds, am, pm optional)'): def __init__(self, error_message='Enter time as hh:mm:ss (seconds, am, pm optional)'):
self.error_message = error_message self.error_message = error_message
def __call__(self, value): def __call__(self, value):
@@ -2221,7 +2221,7 @@ class IS_DATE(Validator):
""" """
def __init__(self, format='%Y-%m-%d', def __init__(self, format='%Y-%m-%d',
error_message='enter date as %(format)s', error_message='Enter date as %(format)s',
timezone = None): timezone = None):
""" """
timezome must be None or a pytz.timezone("America/Chicago") object timezome must be None or a pytz.timezone("America/Chicago") object
@@ -2295,7 +2295,7 @@ class IS_DATETIME(Validator):
return dict(format=format) return dict(format=format)
def __init__(self, format='%Y-%m-%d %H:%M:%S', def __init__(self, format='%Y-%m-%d %H:%M:%S',
error_message='enter date and time as %(format)s', error_message='Enter date and time as %(format)s',
timezone=None): timezone=None):
""" """
timezome must be None or a pytz.timezone("America/Chicago") object timezome must be None or a pytz.timezone("America/Chicago") object
@@ -2343,7 +2343,7 @@ class IS_DATE_IN_RANGE(IS_DATE):
>>> v = IS_DATE_IN_RANGE(minimum=datetime.date(2008,1,1), \ >>> v = IS_DATE_IN_RANGE(minimum=datetime.date(2008,1,1), \
maximum=datetime.date(2009,12,31), \ maximum=datetime.date(2009,12,31), \
format="%m/%d/%Y",error_message="oops") format="%m/%d/%Y",error_message="Oops")
>>> v('03/03/2008') >>> v('03/03/2008')
(datetime.date(2008, 3, 3), None) (datetime.date(2008, 3, 3), None)
@@ -2368,11 +2368,11 @@ class IS_DATE_IN_RANGE(IS_DATE):
self.maximum = maximum self.maximum = maximum
if error_message is None: if error_message is None:
if minimum is None: if minimum is None:
error_message = "enter date on or before %(max)s" error_message = "Enter date on or before %(max)s"
elif maximum is None: elif maximum is None:
error_message = "enter date on or after %(min)s" error_message = "Enter date on or after %(min)s"
else: else:
error_message = "enter date in range %(min)s %(max)s" error_message = "Enter date in range %(min)s %(max)s"
IS_DATE.__init__(self, IS_DATE.__init__(self,
format=format, format=format,
error_message=error_message, error_message=error_message,
@@ -2399,7 +2399,7 @@ class IS_DATETIME_IN_RANGE(IS_DATETIME):
>>> v = IS_DATETIME_IN_RANGE(\ >>> v = IS_DATETIME_IN_RANGE(\
minimum=datetime.datetime(2008,1,1,12,20), \ minimum=datetime.datetime(2008,1,1,12,20), \
maximum=datetime.datetime(2009,12,31,12,20), \ maximum=datetime.datetime(2009,12,31,12,20), \
format="%m/%d/%Y %H:%M",error_message="oops") format="%m/%d/%Y %H:%M",error_message="Oops")
>>> v('03/03/2008 12:40') >>> v('03/03/2008 12:40')
(datetime.datetime(2008, 3, 3, 12, 40), None) (datetime.datetime(2008, 3, 3, 12, 40), None)
@@ -2422,11 +2422,11 @@ class IS_DATETIME_IN_RANGE(IS_DATETIME):
self.maximum = maximum self.maximum = maximum
if error_message is None: if error_message is None:
if minimum is None: if minimum is None:
error_message = "enter date and time on or before %(max)s" error_message = "Enter date and time on or before %(max)s"
elif maximum is None: elif maximum is None:
error_message = "enter date and time on or after %(min)s" error_message = "Enter date and time on or after %(min)s"
else: else:
error_message = "enter date and time in range %(min)s %(max)s" error_message = "Enter date and time in range %(min)s %(max)s"
IS_DATETIME.__init__(self, IS_DATETIME.__init__(self,
format=format, format=format,
error_message=error_message, error_message=error_message,
@@ -2453,7 +2453,7 @@ class IS_LIST_OF(Validator):
self.other = other self.other = other
self.minimum = minimum self.minimum = minimum
self.maximum = maximum self.maximum = maximum
self.error_message = error_message or "enter between %(min)g and %(max)g values" self.error_message = error_message or "Enter between %(min)g and %(max)g values"
def __call__(self, value): def __call__(self, value):
ivalue = value ivalue = value
@@ -2580,7 +2580,7 @@ class IS_SLUG(Validator):
def urlify(value, maxlen=80, keep_underscores=False): def urlify(value, maxlen=80, keep_underscores=False):
return urlify(value, maxlen, keep_underscores) return urlify(value, maxlen, keep_underscores)
def __init__(self, maxlen=80, check=False, error_message='must be slug', keep_underscores=False): def __init__(self, maxlen=80, check=False, error_message='Must be slug', keep_underscores=False):
self.maxlen = maxlen self.maxlen = maxlen
self.check = check self.check = check
self.error_message = error_message self.error_message = error_message
@@ -2878,7 +2878,7 @@ class CRYPT(object):
key=None, key=None,
digest_alg='pbkdf2(1000,20,sha512)', digest_alg='pbkdf2(1000,20,sha512)',
min_length=0, min_length=0,
error_message='too short', salt=True, error_message='Too short', salt=True,
max_length=1024): max_length=1024):
""" """
important, digest_alg='md5' is not the default hashing algorithm for important, digest_alg='md5' is not the default hashing algorithm for
@@ -3123,7 +3123,7 @@ class IS_IMAGE(Validator):
extensions=('bmp', 'gif', 'jpeg', 'png'), extensions=('bmp', 'gif', 'jpeg', 'png'),
maxsize=(10000, 10000), maxsize=(10000, 10000),
minsize=(0, 0), minsize=(0, 0),
error_message='invalid image'): error_message='Invalid image'):
self.extensions = extensions self.extensions = extensions
self.maxsize = maxsize self.maxsize = maxsize
@@ -3230,7 +3230,7 @@ class IS_UPLOAD_FILENAME(Validator):
""" """
def __init__(self, filename=None, extension=None, lastdot=True, case=1, def __init__(self, filename=None, extension=None, lastdot=True, case=1,
error_message='enter valid filename'): error_message='Enter valid filename'):
if isinstance(filename, str): if isinstance(filename, str):
filename = re.compile(filename) filename = re.compile(filename)
if isinstance(extension, str): if isinstance(extension, str):
@@ -3342,7 +3342,7 @@ class IS_IPV4(Validator):
('300.2.3.4', 'enter valid IPv4 address') ('300.2.3.4', 'enter valid IPv4 address')
>>> IS_IPV4(minip='1.2.3.4', maxip='1.2.3.4')('1.2.3.4') >>> IS_IPV4(minip='1.2.3.4', maxip='1.2.3.4')('1.2.3.4')
('1.2.3.4', None) ('1.2.3.4', None)
>>> IS_IPV4(minip='1.2.3.5', maxip='1.2.3.9', error_message='bad ip')('1.2.3.4') >>> IS_IPV4(minip='1.2.3.5', maxip='1.2.3.9', error_message='Bad ip')('1.2.3.4')
('1.2.3.4', 'bad ip') ('1.2.3.4', 'bad ip')
>>> IS_IPV4(maxip='1.2.3.4', invert=True)('127.0.0.1') >>> IS_IPV4(maxip='1.2.3.4', invert=True)('127.0.0.1')
('127.0.0.1', None) ('127.0.0.1', None)
@@ -3373,7 +3373,7 @@ class IS_IPV4(Validator):
is_localhost=None, is_localhost=None,
is_private=None, is_private=None,
is_automatic=None, is_automatic=None,
error_message='enter valid IPv4 address'): error_message='Enter valid IPv4 address'):
for n, value in enumerate((minip, maxip)): for n, value in enumerate((minip, maxip)):
temp = [] temp = []
if isinstance(value, str): if isinstance(value, str):
@@ -3462,7 +3462,7 @@ class IS_IPV6(Validator):
('fe80::126c:8ffa:fe22:b3af', None) ('fe80::126c:8ffa:fe22:b3af', None)
>>> IS_IPV6()('192.168.1.1') >>> IS_IPV6()('192.168.1.1')
('192.168.1.1', 'enter valid IPv6 address') ('192.168.1.1', 'enter valid IPv6 address')
>>> IS_IPV6(error_message='bad ip')('192.168.1.1') >>> IS_IPV6(error_message='Bad ip')('192.168.1.1')
('192.168.1.1', 'bad ip') ('192.168.1.1', 'bad ip')
>>> IS_IPV6(is_link_local=True)('fe80::126c:8ffa:fe22:b3af') >>> IS_IPV6(is_link_local=True)('fe80::126c:8ffa:fe22:b3af')
('fe80::126c:8ffa:fe22:b3af', None) ('fe80::126c:8ffa:fe22:b3af', None)
@@ -3499,7 +3499,7 @@ class IS_IPV6(Validator):
is_6to4=None, is_6to4=None,
is_teredo=None, is_teredo=None,
subnets=None, subnets=None,
error_message='enter valid IPv6 address'): error_message='Enter valid IPv6 address'):
self.is_private = is_private self.is_private = is_private
self.is_link_local = is_link_local self.is_link_local = is_link_local
self.is_reserved = is_reserved self.is_reserved = is_reserved
@@ -3647,7 +3647,7 @@ class IS_IPADDRESS(Validator):
('300.2.3.4', 'enter valid IP address') ('300.2.3.4', 'enter valid IP address')
>>> IS_IPADDRESS(minip='192.168.1.0', maxip='192.168.1.255')('192.168.1.100') >>> IS_IPADDRESS(minip='192.168.1.0', maxip='192.168.1.255')('192.168.1.100')
('192.168.1.100', None) ('192.168.1.100', None)
>>> IS_IPADDRESS(minip='1.2.3.5', maxip='1.2.3.9', error_message='bad ip')('1.2.3.4') >>> IS_IPADDRESS(minip='1.2.3.5', maxip='1.2.3.9', error_message='Bad ip')('1.2.3.4')
('1.2.3.4', 'bad ip') ('1.2.3.4', 'bad ip')
>>> IS_IPADDRESS(maxip='1.2.3.4', invert=True)('127.0.0.1') >>> IS_IPADDRESS(maxip='1.2.3.4', invert=True)('127.0.0.1')
('127.0.0.1', None) ('127.0.0.1', None)
@@ -3672,7 +3672,7 @@ class IS_IPADDRESS(Validator):
('fe80::126c:8ffa:fe22:b3af', 'enter valid IP address') ('fe80::126c:8ffa:fe22:b3af', 'enter valid IP address')
>>> IS_IPADDRESS(is_ipv6=True)('192.168.1.1') >>> IS_IPADDRESS(is_ipv6=True)('192.168.1.1')
('192.168.1.1', 'enter valid IP address') ('192.168.1.1', 'enter valid IP address')
>>> IS_IPADDRESS(is_ipv6=True, error_message='bad ip')('192.168.1.1') >>> IS_IPADDRESS(is_ipv6=True, error_message='Bad ip')('192.168.1.1')
('192.168.1.1', 'bad ip') ('192.168.1.1', 'bad ip')
>>> IS_IPADDRESS(is_link_local=True)('fe80::126c:8ffa:fe22:b3af') >>> IS_IPADDRESS(is_link_local=True)('fe80::126c:8ffa:fe22:b3af')
('fe80::126c:8ffa:fe22:b3af', None) ('fe80::126c:8ffa:fe22:b3af', None)
@@ -3714,7 +3714,7 @@ class IS_IPADDRESS(Validator):
is_teredo=None, is_teredo=None,
subnets=None, subnets=None,
is_ipv6=None, is_ipv6=None,
error_message='enter valid IP address'): error_message='Enter valid IP address'):
self.minip = minip, self.minip = minip,
self.maxip = maxip, self.maxip = maxip,
self.invert = invert self.invert = invert