Apologies 

check_credentials(request)

instead of

check_credentials('admin')

On Monday, 20 August 2012 14:33:55 UTC-5, mweissen wrote:
>
> A little bit more code:
>
> db.define_table('org',
>     Field('orgnr',
>     Field(shortname',
>         length=20, 
>         requires=IS_LENGTH(maxsize=20,minsize=3)),
>     ...
>     )
>
>
> auth.settings.extra_fields['auth_group']=[
>     Field('org','reference org',
>         default=lambda: session.org,
>         requires=IS_IN_DB(db, 'org.id', '%(shortname)s',
>           error_message=T('Not allowed')), 
>       ),...
>
> from gluon.fileutils import check_credentials
>
> db.auth_group._common_filter=lambda query:
>   (db.auth_group.org==session.org) or check_credentials('admin')
>
>
>
> Now I am using the admin interface and I try to change one row of 
> auth_group. The same result as before (without check_credentials('admin'))
>
>    - The value of auth_group.org==1.
>    - The error messae is "value not in database"
>    - And, of course, there is a record in db.org with db.org.id==1
>    
> To learn more about check_credentials I added:
>
> if check_credentials('admin'): print 'Admin'
>
> Only for the test. 
>
> And I get a new error message:
>
> 127.0.0.1.2012-08-20.21-05-04.43dc8360-a22d-408d-8889-00fe62ef4a38
> <type 'exceptions.AttributeError'> 'str' object has no attribute 'env' 
> Version  web2py™ (2, 0, 0, datetime.datetime(2012, 8, 9, 8, 57, 54), 
> 'dev')  Python Python 2.7.2: D:\Python27\python.exe  Traceback 
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
>
> Traceback (most recent call last):
>   File "D:\...\web2py\gluon\restricted.py", line 205, in restricted
>
>
>
>     exec ccode in environment
>   File "D:/.../web2py/applications/secure/models/db.py" 
> <http://127.0.0.1:8000/admin/default/edit/secure/models/db.py>, line 389, in 
> <module>
>
>
>
>     if check_credentials('admin'): print 'Admin'
>
>
>
>   File "D:\...\web2py\gluon\fileutils.py", line 328, in check_credentials
>
>
>
>     if request.env.web2py_runtime_gae:
>
>
> AttributeError: 'str' object has no attribute 'env'
>
>
>
> 2012/8/20 Massimo Di Pierro <massimo....@gmail.com <javascript:>>
>
>> You can do:
>>
>> db.define_table(...., common_filter = None if not session.org else 
>> (lambda query:(db.my_table.org==session.org)))
>>
>> you can also use the check:
>>
>> from gluon.fileutils import check_credentials
>> check_credentials('admin') #returns true if you are logged as admin.
>>
>>
>> On Monday, 20 August 2012 12:48:29 UTC-5, mweissen wrote:
>>
>>> (1) session.org will be set with the login. But I am an administrator: 
>>>  I think I should use the admin application without a login to the 
>>> application itself.
>>>
>>> (2) Lets say session.org==1: now it is not possible to change a record 
>>> with my_table.org==2 using the admin app.
>>>
>>> (3) Did you mean:
>>>
>>> common_filter = lambda query:
>>>   (db.my_table.org==session.org)** if session.org else True
>>>
>>>
>>> Interesting idea!
>>>
>>> 2012/8/20 Massimo Di Pierro <massimo....@gmail.com>
>>>
>>> How do you set the common filter? Seems to me if session.org is not 
>>>> set, the common filter should not be set. web2py cannot ignore it because 
>>>> it does the wrong thing.
>>>>
>>>>
>>>> On Monday, 20 August 2012 11:41:41 UTC-5, mweissen wrote:
>>>>>
>>>>> I have an application which should be used by some organizations. 
>>>>> Therefore I have added 
>>>>>
>>>>> Field('org','reference org', default=lambda:session.org), 
>>>>>
>>>>> and 
>>>>>
>>>>> common_filter = lambda query: db.my_table.org==session.org
>>>>>
>>>>> to my_table. session.org contails the id of the respective 
>>>>> organization.
>>>>> Great feature,works fine! But using the database administration of the 
>>>>> admin-application the common filter is still active.
>>>>> There is an "ignore_rw=True" in the admin application and I think I 
>>>>> have read somewhere that there is also an "ignore_common_filters=True
>>>>> ".
>>>>>
>>>>> If session.org is not set, a "database db select" shows strange 
>>>>> effects:
>>>>>
>>>>>    - I can see the first 100 rows.
>>>>>    - But the message is "0 selected" 
>>>>>    - It is not possible to Update a record 
>>>>>
>>>>>
>>>>> A simple "ignore_common_filters=True" at the appropriate location 
>>>>> should solve the problem. I have taken a quick look at the code, but I 
>>>>> think this statement has to be "very inside", therefore I have no 
>>>>> concrete 
>>>>> proposal.
>>>>>
>>>>> Regards, Martin
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>  -- 
>>>>
>>>   -- 
>>  
>>  
>>
>

-- 



Reply via email to