[Plone-IT] Script, external methods e classi istanziate nell'external method - soluzione parziale

Giacomo Zanobini g.zanobini a arpat.toscana.it
Ven 18 Nov 2011 13:17:18 UTC


Il 16/11/2011 17.44, Fabrizio Reale ha scritto:
> Ciao Giacomo,
>
>
> Guarda il sorgente dell'oggetto Python Script, dovrebbe trovarsi facilmente l'elenco delle classi autorizzate.
>
> A presto,
> Fabrizio
ok, per il momento, seguendo la strada da te indicata, sono arrivato ad 
una soluzione (forse non perfetta).
Ho scoperto che esiste una funzione allow_class() per aggiungere una 
classe a quelle permesse.

l'external method che richiamo adesso aggiunge MyClass alle classi 
permesse nei PythonScript, prima di restituirne una istanza ed č cosė 
definito:

def getMyClass():
         from AccessControl import allow_class
         allow_class(getMyClass)
         return getMyClass()


...e nel mio PythonScript, posso mettere istruzioni come queste:
istanza1 = getInstanceOfMyClass()
istanza1.faiQualcosa() <--- questa istruzione non causa piu' un errore 
di sicurezza



DOMANDA: SE allow_class(getMyClass) viene richiamato piu' di una volta, 
ci sono controindicazioni? (liste immense di classi permesse, 
rallentamenti, memoria occupata che cresce ad ogni chiamata...)


Giacomo


Nota:
   Ho  verificato che una volta eseguito allow_class(), non sarebbe 
necessario richiamarlo piu' fino al successivo riavvio del server. 
(insomma, come č logico, una volta aggiunto non serve aggiungerlo di 
nuovo... ma non mi sembra esista una funzione isAllowed(nome_classe) per 
verificare la cosa.




Maggiori informazioni sulla lista Plone-IT