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

-- 



Reply via email to