> Il giorno 05/mar/2015, alle ore 09:36, Alessandro <dedalus2...@gmail.com> 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 francesco.porc...@softwell.it Twitter: @fporcari WEB: www.genropy.org
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python