Thanks for sharing the solution. It is in fact great that you are doing 
that and I would hope more people were to solutions to their own problems 
if they find them. This helps us a lot. 

On Wednesday, 14 September 2016 19:29:22 UTC-5, Joe Barnhart wrote:
>
> I solved my problem.
>
> Part of me wants to just leave it at that.  But I come here to teach as 
> well as learn, and this is definitely a "teaching moment" for web2py 
> developers.
>
> The code I posted before was without error.  The problem occurred because 
> it was not the only code in the controller.  Here is the complete example 
> from the web page:
>
> def reg_getfile():
>     from datetime import datetime as dt
>     from copy import copy
>     if db(db.download_group).isempty():
>         init_download_groups_table()
>     if session.idset:
>         rset = session.idset
>         session.idclear = copy(rset)
>         now = dt.today()
>     elif request.vars.modified_on:
>         dbrs, dbre = db.reg_swim, db.reg_edit
>         rows = db((dbre.id_regswim==dbrs.id
> )&(dbre.modified_on==request.vars.modified_on)).select(dbre.id)
>         rset = set([r.id for r in rows])
>         now = dt.strptime(request.vars.modified_on,'%Y-%m-%d %H:%M:%S')
>     else:
>         return ''
>     return _reg_getfile(now, rset)
>
> def _reg_getfile(now,idset):
>     from regexport import generate_regfile
>     from cStringIO import StringIO
>     buf = StringIO()
>     generate_regfile(idset, buf)
>     buf.seek(0)
>     fname = 'reg-%s.sd3'%now.strftime('%y%m%d-%H%M%S')
>     response.headers['Content-Type']='application/sd3'
>     response.headers['Content-Disposition']='attachment; filename=%s'%fname
>     return response.stream(buf)
>
> The second method, _reg_getfile() (with the underscore) is what we poured 
> over before.  The problem was that it was not the method called directly by 
> the link.  The method reg_getfile() (no underscore) is called first.  It 
> examines some vars, does a database lookup for the ids of affected rows, 
> and then calls the underscore method.
>
> And here is where the problem lies:
>
> return _reg_getfile(now,rset)
>
> *The code that DOESN'T work lacks the little "return" keyword.*  ARRRRGH! 
>  I am not an inexperienced Python programmer.  It's not that I'm just 
> careless.  It's the kind of stupid little error that can sideline anybody, 
> no matter how much code you're written.  It's pernicious because everything 
> "seems" to work perfectly.  You can stop it almost anywhere and everything 
> looks fine.
>
> So let my stupidity be a cautionary tale.  When something like this 
> happens to you, you'll solve it quicker if you make these assumptions:
>
>    1. It's not the fault of the platform.  web2py works just fine.
>    2. It's not a bug in Python.  The chances of finding a bug in Python 
>    are probably less than being hit by a meteor.  Not because it doesn't have 
>    any but because there are so many users that someone else found it already.
>    3. If it worked before in any fashion -- WHAT CHANGED?  In my case I 
>    split one method into two.
>    4. Don't be afraid to step thru the debugger into code you don't know. 
>     You'll learn more and eventually find your answer.
>    5. And last, "always make different mistakes."  I like that one.
>
> Joe
>

-- 
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.

Reply via email to