It appears as though '2pm' and '2 pm' validate differently while '2:00 pm'
and '2:00pm' validate the same.
In my quick testing, removing all spaces still allows the IS_TIME()
validator to pass any tests.
Am I missing any international time entry methods where the spaces would be
critical or would this be an acceptable patch/fix?
pre-fix
>>> IS_TIME()('2pm')
(datetime.time(14, 0), None)
>>> IS_TIME()('2 pm')
(datetime.time(2, 0), None)
>>> IS_TIME()('02 pm')
(datetime.time(2, 0), None)
>>> IS_TIME()('2:00 pm')
(datetime.time(14, 0), None)
>>> IS_TIME()('2:00 pm ')
(datetime.time(14, 0), None)
>>> IS_TIME()('2 pm ')
(datetime.time(2, 0), None)
>>> IS_TIME()('2pm ')
('2pm ', 'Enter time as hh:mm:ss (seconds, am, pm optional)')
post-fix
>>> IS_TIME()('2pm')
(datetime.time(14, 0), None)
>>> IS_TIME()('2 pm')
(datetime.time(14, 0), None)
>>> IS_TIME()('02 pm')
(datetime.time(14, 0), None)
>>> IS_TIME()('2:00 pm')
(datetime.time(14, 0), None)
>>> IS_TIME()('2:00 pm ')
(datetime.time(14, 0), None)
>>> IS_TIME()('2 pm ')
(datetime.time(14, 0), None)
>>> IS_TIME()('2pm ')
(datetime.time(14, 0), None)
gluon/validators.py
class IS_TIME(Validator):
...
def __call__(self, value):
try:
ivalue = value
value = regex_time.match(value.lower().replace(' ',''))
...
gluon/tests/test_validators.py
...
rtn = IS_TIME()('2 pm')
self.assertEqual(rtn, (datetime.time(14, 00), None))
rtn = IS_TIME()('2 pm ')
self.assertEqual(rtn, (datetime.time(14, 00), None))
rtn = IS_TIME()('2pm')
self.assertEqual(rtn, (datetime.time(14, 00), None))
rtn = IS_TIME()('2pm ')
self.assertEqual(rtn, (datetime.time(14, 00), None))
...
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.