Yes it was the older version. Thanks for your suggestions guys, I used a combination of response.js and frame to render the response and also open a save as dialog.. In short:
in form_query(): response.js = "jQuery('#ddl').attr('src','form_query_download')" And form_query_download(): code to re run the query or read from session after storing rows using rows.as_list() and stream results as a csv file: #ddl refers to the id of an empty iframe thats invisible. mave On Wednesday, September 12, 2012 4:41:21 AM UTC-7, Anthony wrote: > > Are you using the latest version of web2py? That's a new option. > > On Wednesday, September 12, 2012 4:43:50 AM UTC-4, maverick wrote: >> >> Anthony, >> Thanks for the explanation. >> >> I tried cacheable=True in my select(), like: >> rows = db().select(db.vmt_weekly.ALL, cacheable=True) >> >> but it is met with internal error: <type 'exceptions.SyntaxError'> >> invalid select attribute: cacheable >> >> Is there something I'm missing? >> >> mave >> >> >> On Tuesday, September 11, 2012 10:17:48 PM UTC-7, Anthony wrote: >>> >>> Can you show me how I could modify form_query() to embed JS (if I've >>>> understood your second option correctly) in order to trigger the download? >>>> >>> >>> You're not going to be able to have a single call to form_query both >>> return HTML content and stream a file at the same time -- those are two >>> separate HTTP responses, so you need two separate requests. Return the HTML >>> first, and then request the file separately. If you don't want to repeat >>> the query to re-generate the rows object again, in your select(), add >>> cacheable=True. That will allow you to store rows in the session when >>> form_query is called. Your subsequent call to fetch the file can then >>> retrieve rows from the session, convert to csv, and then stream. >>> >>> Anthony >>> >> --