Hello, if I have to get the list from database, where I need to put the
code? At the start of default.py where I use the functions? Thanks
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 [email protected].
For more options, visit https://groups.google.com/d/optout.