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.