Can you please open a ticket about this?

On Thursday, 19 April 2012 06:43:24 UTC-5, Douglas Ross wrote:
>
> Massimo,
>
> Sorry for the delayed response.... took me a while to get trunk, unzip 
> correctly, etc.... although I know now.
>
> I used the trunk version.
>
> If I put in: 
>
> http://localhost:8080/hosp/api/calldatasmart.json?search=call.start is 
> greater than "2010-03-14"
> I still get the same error...
>
> If I put in:
> http://localhost:8080/hosp/api/calldatasmart.json?search=call.start is 
> greater than "2010-03-14 20:58:54"
> IT WORKS PERFECTLY.
>
> I expect that this is an error from your perspective in the trunk still, 
> however I am happy to put in the full date and time, and get it to work, so 
> thanks very much.
>
> Doug 
>
> On Tuesday, 10 April 2012 00:21:51 UTC+10, Massimo Di Pierro wrote:
>>
>> This is actually not a GAE issue. This is a smartgrid issue. Because you 
>> are comparing with a datetime issue, it expects the time as part of the 
>> date. I just change the parsing routine in trunk to fix this problem. Give 
>> it a try.
>>
>> Massimo
>>
>> On Sunday, 8 April 2012 22:36:34 UTC-5, Douglas Ross wrote:
>>>
>>> Hi,
>>>
>>> I know the documentation explains that you cannot do 'complex' datetime 
>>> queries in web2py with GAE, however I am hoping that this does not qualify 
>>> as 'complex'.
>>>
>>> I am trying to use the smartquery (experimental) functionality that it 
>>> works really well in the SQLlite db.
>>>
>>> Unfortunately, the same call fails in GAE.
>>>
>>> I am using Version 1.99.7, and the latest GAE.
>>>
>>> To reproduce the problem, I have a table with a datetime field:
>>>
>>> db.define_table('call',
>>>       Field('start', 'datetime'),
>>>       Field('end', 'datetime'),
>>>       Field('created_on','datetime',default=request.now,
>>>           label=T('Created On'),writable=False,readable=False),
>>>       Field('modified_on','datetime',default=request.now,
>>>           label=T('Modified On'),writable=False,readable=False,
>>>           update=request.now))
>>>
>>> I have created an REST interface using the smartquery functionality, 
>>> that works well on SQL lite:
>>>
>>> @request.restful()
>>> #@auth.requires_login()
>>> def calldatasmart():
>>>     response.view = 'generic.'+request.extension
>>>     def GET(search):
>>>         try:
>>>             rows = db.smart_query([db.call],search).select()
>>>             return dict(result=rows)
>>>         except RuntimeError:
>>>             raise HTTP(400,"Invalid search string") 
>>>     return locals()
>>>
>>> Now if I do the following I get the correct response from SQLLite and an 
>>> error from GAE. (Note: I created the data using the default=request.now 
>>> function, so it should be a datetime in the datastore.
>>>
>>> http://localhost:8080/api/calldatasmart.json?search=call.created_on is 
>>> greater than "2012-03-20"
>>>
>>> Error in GAE:
>>>
>>> File "/........./gluon/dal.py", line 3396, in represent
>>>
>>>     time_items = map(int,str(obj)[11:].strip().split(':')[:3])
>>>
>>> ValueError: invalid literal for int() with base 10: ''
>>> Question: 
>>> 1. Is this a bug in the experimental smartquery functionality?
>>> 2. Does all datetime comparisons not work with GAE?
>>> 3. Can I use a GQL call to do it, or is there a way in Web2py to do it 
>>> nicely?
>>>
>>> BTW: I have not coded as much as this for 15 years, and I have not had 
>>> so much fun in getting back into it. So thankyou all for the work you have 
>>> done to create web2py...
>>>
>>> Doug
>>>
>>>

Reply via email to