I don't think the form validators are used when using parse_as_rest(). When the URI is parsed, the date is simply extracted (as a string?) into a DAL query.
Ex from my previous query: >>> http://localhost/manager/default/api/unit/123/timeseries/2013-05-01/2013-05-02 >>> query=(unit.unit_id = '123') query=(timeseries.utc_time >= '2013-05-01') query=(timeseries.utc_time <= '2013-05-02') Printed from dal.py->parse_as_rest() The three above queries are and-ed together in the line : "dbset=dbset(query)" On Monday, May 6, 2013 3:39:13 PM UTC-7, Christian Foster Howes wrote: > > there are a couple of characters that web2py is not nice about in the > URL parsing..... > > for the format string, on the datetime fields use the > IS_DATETIME(format='...') validator with a custom format string. see > http://web2py.com/books/default/chapter/29/07#Validators > > On 5/6/13 15:35 , Bernard wrote: > > Thanks Christian, > > > > I tried to escape it to %3A but that gave me an error invalid request. I > > couldn't figure out where it's being blocked on the server (routes.py?). > > > > Where can I get more info to change separator and parsing? Is that all > in > > dal.py? > > > > On Monday, May 6, 2013 3:28:03 PM UTC-7, Christian Foster Howes wrote: > >> > >> can you url escape the : and have it work? > >> > >> if not, maybe use a different separator and change the string to > timestamp > >> parsing to expect your format. > >> > >> cfh > >> > >> On Monday, May 6, 2013 1:42:40 PM UTC-7, Bernard wrote: > >>> > >>> > >>> Hi Web2py users, > >>> I am using the parse_as_rest feature for filtering by date range: > >>> The pattern is as follows: > >>> "/unit/{unit.unit_id}/timeseries[timeseries.unit]/{ > >>> timeseries.utc_time.ge}/{timeseries.utc_time.le}", > >>> I couldn't find documentation that 'ge' and 'le' are valid for > datetime > >>> fields, it seems to work well: > >>> > >>> > http://localhost/manager/default/api/unit/123/timeseries/2013-05-01/2013-05-02 > > >>> > >>> However, I need to filter based on date and time. > >>> > >>> Ideally, I would like to send a request with the time as part of the > date > >>> specification: > >>> > http://localhost/manager/default/api/unit/123/timeseries/2013-05-0102:00/2013-05-0200:00 > > >>> However, this is an invalid request due to the ':' in the URI. > >>> I looked into using seconds since epoch for the datetime spec, but > that's > >>> too slow on sqlite. > >>> > >>> I'm wondering if anybody knows an easy way to work around this? > >>> > >>> The not so pretty solution I'm considering right now is to add a time > as > >>> part of the URI after the date: > >>> > >>> > http://localhost/manager/default/api/unit/123/timeseries/2013-05-01/02/00/2013-05-02/00/00 > > >>> Then, in the controller, I would modify the args before passing to the > >>> parse_as_rest() function by concating args 4 and 5 with the date in > arg 3, > >>> to form the correct format ('YYYY-MM-YY hh:ss') that parse_as_rest() > can > >>> use. > >>> > >>> Any help much appreciated. > >>> > >>> Regards, > >>> Bernard > >>> > >>> > > > -- --- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.