Clearly there is a problem with that function. If auth is defined, I'd expect
>>> a=dict() >>> 'x' in a False >>> a=dict(x=1) >>> 'x' in a True >>> The problem I have is that it fails when the user is not logged in. Perhaps this is the related to your problem? I have a possible fix in trunk. Please check that it returns True/False. It does for me. On Friday, 3 August 2012 00:34:05 UTC-5, mweissen wrote: > > Interesting results (Version 2.00.0 (2012-08-02 21:51:02) dev) > > From tools.py: > > def is_impersonating(self): > return 'impersonator' in current.session.auth > > The return value of is_impersonating is not False or True but None or the > whole current.session.auth as string. > A change in tools.py to > > def is_impersonating(self): > return *(*'impersonator' in current.session.auth*) != None* > > works, but I cannot understand why the in-operator has not the results False > or True. > > > 2012/7/29 Massimo Di Pierro <massimo.dipie...@gmail.com> > >> I think this should be considered a bug. Than you check trunk? >> >> >> On Sunday, 29 July 2012 05:37:51 UTC-5, weheh wrote: >>> >>> I haven't traced through all the code carefully, but is_impersonating() >>> returns current.session.auth.**impersonator, which is based on a >>> cPickle. So you're not getting a boolean, as you might be led to expect >>> from the name of the function. >>> >>> >>> On Sunday, July 29, 2012 1:38:42 PM UTC+8, mweissen wrote: >>>> >>>> I am using "impersonate" (great idea!) and I have a menu item which >>>> should only appear when somebody is impersonated. I wrote >>>> >>>> ('end impersonate', False, URL('endimpersonate'),[],*auth. >>>> is_impersonating()*) >>>> >>>> This did notwork, I had to write >>>> >>>> ('end impersonate', False, URL('endimpersonate'),[],*auth. >>>> is_impersonating()!=None*) >>>> >>>> Why? >>>> Regards, Martin >>>> >>>> >> --