Hello all,
I'm learning the inner workings of web2py and try to make a custom
validator called IS_TIME_IN_RANGE (based on the IS_DATE_IN_RANGE
validator).
I saved the next code in :
*www-data/web2py/applications/my_app/modules/customvalidators.py
: *
*from gluon.validators import IS_TIME*
*class IS_TIME_IN_RANGE(IS_TIME):*
* def __init__(self,*
* minimum=None,*
* maximum=None,*
* error_message=None):*
* self.minimum = minimum*
* self.maximum = maximum*
* if error_message is None:*
* if minimum is None:*
* error_message = "Enter time on or before %(max)s"*
* elif maximum is None:*
* error_message = "Enter time on or after %(min)s"*
* else:*
* error_message = "Enter time in range %(min)s %(max)s"*
* IS_TIME.__init__(self,*
* error_message=error_message)*
* self.extremes = dict(min=self.minimum,*
* max=self.maximum)*
* def __call__(self, value):*
* ovalue = value*
* (value, msg) = IS_TIME.__call__(self, value)*
* if msg is not None:*
* return (value, msg)*
* if self.minimum and self.minimum > value:*
* return (ovalue, translate(self.error_message) % self.extremes)*
* if self.maximum and value > self.maximum:*
* return (ovalue, translate(self.error_message) % self.extremes)*
* return (value, None)*
*In models/db.py of my_app I added : *
*from customvalidators import IS_TIME_IN_RANGE*
*The function in controller/default :*
*def Schedule_Edit():*
* record = db.Schedules(request.args(0)) or redirect(URL('index'))*
* db.Schedules.Start_Time.requires = IS_TIME_IN_RANGE(minimum=
'08:00:00',maximum= '10:00:00')*
* form = SQLFORM(db.Schedules,*
* record=record)*
* if form.process().accepted:*
* session.flash = 'form accepted'*
* redirect(URL('Appl'))*
* elif form.errors:*
* response.flash = 'errors on form'*
* return dict(form = form)*
*And the corresponding view :*
*{{extend 'layout.html'}}*
*{{=form}}*
*The table definition "schedule" in models/db1.py :*
*db.define_table('Schedules',*
* Field('Schedule_Type', 'reference
Schedule_Type',requires=IS_NOT_EMPTY()),*
* Field('Days', 'integer', requires=(IS_NOT_EMPTY(),
IS_INT_IN_RANGE(1,8))),*
* Field('Start_Time',requires=(IS_TIME(), IS_NOT_EMPTY())),*
* Field('Stop_Time',requires=(IS_TIME(), IS_NOT_EMPTY())),*
* Field('Status', 'reference
Status',requires=IS_NOT_EMPTY()),*
* auth.signature)*
Whenever I submit a form in Schedule_edit I get this error :
*<type 'exceptions.Exception'> Validation error, field:Start_Time
<applications.test_MySQL.modules.customvalidators.IS_TIME_IN_RANGE object
at 0x79d8b1b0>*
When I place the IS_TIME_IN_RANGE validator directly in models/db.py, I get
the this error :
*<type 'exceptions.Exception'> Validation error, field:Start_Time
<__restricted__.IS_TIME_IN_RANGE object at 0x79df31d0>*
I've tried several hours to fix this problem but I don't know where to
start exactly.
Any advice would be really appreciated.
Regards,
Koen.
--
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.