SOLVED (6 months later)

I put this aside six months ago when I couldn't make it work. Today I 
really needed it so I dug out pdb and drilled down into 
auth.has_permission().  Finally, the light dawned on me. The table_name 
field is a string! Changing it to "auth_user" fixed the problem.  May I 
suggest a couple of changes to keep others from stumbling where I did?

The online book current has (emphasis mine):
"""
impersonate allows a user to "impersonate" another user. This is important 
for debugging and for support purposes. request.args[0] is the id of the 
user to be impersonated. This is only allowed if the logged in 
userhas_permission('impersonate', 
*db.auth_user*, user_id).
"""
That should be changed to has_permission('impersonate', "*auth_user"*, 
user_id)

It would also help if auth.has_permission threw a ticket if given a bad 
table_name argument, maybe something like:

if not hasattr(db, table_name) and isinstance(getattr(db, table_name), 
db.Table):
    raise ValueError("Table {} doesn't exist in db".format(table_name))


Thanks,
Mike 

-- 

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


Reply via email to