> Il giorno 05/mar/2015, alle ore 09:36, Alessandro <[email protected]> ha
> scritto:
>
> On 02/28/2015 04:15 PM, Giovanni Porcari wrote:
>> http://www.genropy.org/
>>
>> Non è molto documentata (vedi thread sulla lista python.it in questo
>> periodo) ma il programmatore è italiano e ti fornisce assistenza diretta in
>> caso di necessità... Ho messo in copia anche la lista di python, magari
>> riuscite a mettervi in contatto...
>>
>> Grazie Gollum :)
>
> Un paio di domande veloci a riguardo, che credo possano interessare a tutti:
> - cercavo un esempio di gestione delle autorizzazioni/ruoli/privilegi o
> simile. Putroppo non riesco a trovare niente, e dovrei filtrare righe o
> far apparire form un po' diversi in base all'utente correntemente loggato
In genropy non esiste un concetto vero e proprio di privilegio quanto di tag di
autorizzazione.
Un utente può avere N tag associati ad esempio:
user,admin,_DEV_,tonto,dimissionario etc.
I tag di autorizzazione dell’utente sono attribuiti in funzione della modalità
di autenticazione.
Ad esempio nella modalità base che è relativa ad utenti definiti nella
instanceconfig.xml è possibile
definire degli utenti che possono usare una certa istanza e assegnare i tag:
<xml_auth defaultTags="user,xml">
<mario pwd=“lasciamientrare" tags="_DEV_,user”/>
<luigi pwd=“nintendo" tags=“user,tonto"/>
</xml_auth>
Nell’uso vero però ci si affida di norma al package adm (ciò significa che si
può implementare un package di autorizzazione
specifico/personalizzato) che si occupa di gestire utenti e tag nell’ambito del
db.
In questo caso dovrai definire i tag e gli utenti dal menu del package adm
(pagina user e auth tags)
Quando poi nel codice di una pagina desideri abilitare/disabilitare certe parti
solo per certi tag
hai a disposizione nell’ambito della pagina due modalità
1. chiamando dalla pagina
self.application.checkResourcePermission(rules,self.userTags)
2. aggiungendo il parametro _tags=rules agli elementi di pagina che vuoi
controllare.
Ad esempio:
ESEMPIO MODO 1.
def main(self,root,**kwargs):
root.div(‘buongiorno’)
if self.application.checkResourcePermission(‘admin OR
superadmin',self.userTags):
root.div(‘Amministratore: da grandi poteri derivano grandi
responsabilità’)
root.button(‘distruggi tutto’,action=“alert(‘ma sei scemo?')”)
else:
root.div(‘Ciao utente’)
ESEMPIO MODO 2.
def main(self,root,**kwargs):
root.div(‘buongiorno’)
root.div(‘Amministratore: da grandi poteri derivano grandi
responsabilità’,_tags=‘admin OR superadmin')
root.button(‘distruggi tutto’,action=“alert(‘ma sei
scemo?')”’,_tags=‘admin OR superadmin’)
Le regole per le interrogazioni di permessi possono essere più complesse e
prevedere AND e NOT ad esempio
‘admin AND !dimissionario'
> - vedo che ci sono dei metodi accessibili via rpc: è possibile
> sfruttarli anche con script esterni a genropy? potrebbe essere utile
> sfruttare il model per l'inserimento batch di dati, oppure per spedire
> notifiche notturne (fatture scadute, giacenze negative, etc..)
>
Certamente! La soluzione più semplice in questi casi è fare una pagina dove
puoi raccogliere più metodi
nell’esempio che segue la pagina (nell’esempio interroga.py) può rendere la
lista delle province e delle regioni con gli url
http://localhost:8090/nomepackage/interroga/lista_province?regione=LOM
<http://localhost:8090/nomepackage/interroga/lista_province?regione=LOM>
http://localhost:8090/nomepackage/interroga/
<http://localhost:8090/nomepackage/interroga/>lista_regioni
from gnr.core.gnrdecorator import public_method
class GnrCustomWebPage(object):
py_requires='gnrcomponents/externalcall:BaseRpc'
@public_method
def lista_province(self,regione=None,**kwargs):
where = '$regione=:r' if regione else None
return
self.db.table('glbl.provincia').query(where=where,r=regione).fetch()
@public_method
def lista_regioni(self,**kwargs):
return self.db.table('glbl.regione').query().fetch()
Inoltre sono previsti dei cron che permettono di lanciare certi compiti (task)
ad orari e giorni definiti.
Spero di esser stato abbastanza chiaro. Se hai altri dubbi sono qui :)
Ing. Francesco "Ghigo" Porcari
[email protected]
Twitter: @fporcari
WEB: www.genropy.org
_______________________________________________
Python mailing list
[email protected]
http://lists.python.it/mailman/listinfo/python