Stavo cercando di eseguire una mia funzione al momento del logout, però Il mio codice non veniva mai eseguito e non riuscivo a capire perchè. Finalmente grazie a Xavier Morel ho trovato la risposta (ecco la mia domanda su stackoverflow).
Ecco come fare: potete “facilmente” inserire il vostro handler per un determinato evento (un evento specifico di OpenERP, tipo on_logout) in questo modo:
openerp.yourmodule = function(openerp) { openerp.webclient.on_logout.add_first( function () { alert('thatsme!'); } ); }
Dovete fare attenzione a due cose in particolare:
- dovete usare “openerp.webclient” e non “openerp.web.WebClient” (in realtà sono alias ma il secondo non è disponibile)
- dovete usare il nome reale del vostro modulo in modo che il vostro JS venga caricato
A dire il vero l’ultimo punto è tra le poche informazioni che trovate nella non-tanto-ufficiale documentazione del modulo web (leggi il mio ultimo post per sapere come ottenerla).
Usando “add_first” ho aggiunto un handler per l’evento “on_logout” che verrà eseguito prima di ogni altro handler esistente.
Guardando il codice originale del modulo troverete altri “hook” come ad esempio “add_last” che a sua volta inserisce il vostro handler alla fine della coda di esecuzione.