Thanks

Il giorno giovedì 20 aprile 2017 15:40:33 UTC+2, Marvix ha scritto:
>
> https://docs.python.org/2/library/functions.html#any
>
> def any(iterable):
>     for element in iterable:
>         if element:
>             return True
>     return False
>
> so any() return true if one (or more) of the elements is True.
>
>
> this:
>
> auth.has_membership(role) for role in list_of_roles
>
> try all the roles in the list.
>
> so if one of the auth.has_membership() return true, the lamba function return 
> true.
>
>
>
> 2017-04-20 14:36 GMT+02:00 Andrea Fae' <and...@gmail.com <javascript:>>:
>
>> But... "any"? I need some more information about lambda I think....where 
>> to find this syntax with any?
>> where is written what you told about evaluation?
>> Thank you very much
>>
>>
>> Il giorno mercoledì 19 aprile 2017 17:30:06 UTC+2, Anthony ha scritto:
>>>
>>> First, when using auth.requires(), it is best to put the test inside a 
>>> lambda (or standard function) so it will not be evaluated until the 
>>> decorated function is actually called (otherwise, the test will be 
>>> evaluated whenever the controller file is accessed).
>>>
>>> Anyway, you can do something like this:
>>>
>>> list_of_roles = ['role1', 'role2', 'role3'] # You could get this list 
>>> via a database query
>>>
>>> @auth.requires(lambda: any(auth.has_membership(role) for role in 
>>> list_of_roles))
>>> def myfunc():
>>>     ...
>>>
>>> Anthony
>>>
>>> On Wednesday, April 19, 2017 at 8:14:53 AM UTC-4, Andrea Fae' wrote:
>>>>
>>>> For example I have this type of functions:
>>>>
>>>> # sono autorizzati i vari manager a seconda della sede
>>>> @auth.requires(auth.has_membership('Total-manager') | 
>>>> auth.has_membership('Conegliano-studente') | 
>>>> auth.has_membership('Pordenone-manager') | 
>>>> auth.has_membership('Pordenone-studente') | 
>>>> auth.has_membership('Udine-studente'))
>>>> def appuntamenti_studente():
>>>>      # recupero lo studente selezionato
>>>>     studente = request.args(0)
>>>>     # recupero il gruppo
>>>>     # query per recuperare il nome  dello studente
>>>>     query_nome_studente = db.auth_user.id == studente
>>>>     # recupero nome e cognome dello studente
>>>>     row = 
>>>> db(query_nome_studente).select(db.auth_user.first_name,db.auth_user.last_name).first()
>>>>     #seleziono gli eventi dello studente
>>>>     query = (db.evento.studenti.contains(studente))
>>>>     eventi_stud = db(query).select()
>>>>     # imposto la grid per far vedere gli eventi dello studente
>>>>     exportcls = dict(csv_with_hidden_cols=False, html=False, 
>>>> json=False, tsv_with_hidden_cols=False, tsv=False)
>>>>     # solo se lo studente corrisponde a chi si è loggato
>>>>     if (str(auth.user.id) == studente):
>>>>         #print 'sono al form normale'
>>>>         form = SQLFORM.grid(query, args=[studente], 
>>>> fields=[db.evento.titolo, 
>>>> db.evento.inizio,db.evento.fine,db.evento.risorsa, db.evento.materia,
>>>> db.evento.docente],create=False, details=False, editable=False, 
>>>> deletable=False, maxtextlength=60, exportclasses = exportcls)
>>>>     else:
>>>>         redirect(URL('default','index'))
>>>>     return locals()
>>>>
>>>> I'm testing different "fixed" values in the @auth.requires, but they 
>>>> can be more or less depending on how many roles are in the db. I'd like to 
>>>> do this dynamically from the db, extracting and compising this 
>>>> @auth.requires line in dynamic way. Is it possible? Do you have any 
>>>> examples? Thank you
>>>>
>>> -- 
>> 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 web2py+un...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to