.. _orm_genropy/triggers/current_trigger: currentTrigger ============== Ogni trigger mette a disposizione il metodo hook ``currentTrigger``, che permette di eseguire operazioni di controllo in merito alla *tabella*, al *record*, o a un eventuale :ref:`Trigger` genitore. Supponiamo per esempio di avere una tabella ``fattura`` e una ``fattura_riga``, esattamente come in `Sandbox `_. Grazie al ``trigger_onDeleted`` sarà possibile innescare il ricalcolo del totale della fattura in caso di cancellazione di una riga:: def trigger_onDeleted(self,record=None): self.aggiornaFattura(record) Tuttavia, in caso di cancellazione di una fattura, la presenza di un meccanismo di cancellazione di tipo *cascade* andrebbe a innescare anche questo trigger, che però andrebbe in errore, non essendoci più una fattura da aggiornare. Ecco che sfruttando il metodo *hook* ``currentTrigger`` possiamo intervenire e imporre un controllo:: def trigger_onDeleted(self,record=None): if self.currentTrigger.parent: return self.aggiornaFattura(record) Se quindi verrà individuato un ``parent``, ovvero il trigger in questione verrà innescato da un altro trigger genitore (in questo caso quello della tabella *fattura*), richiederemo di non eseguire alcuna operazione. .. hint:: Si noti che per avere un *parent* non è necessario definire un ``trigger_`` nella tabella genitore, in quanto verrà comunque innescato il *trigger* standard (che non esegue alcuna operazione). Oltre a ``parent``, il ``currentTrigger`` ci permette di esplorare anche la *table* e il *record*:: def trigger_onDeleting(self,record=None): if self.currentTrigger.table == 'fatt.fattura': return self.aggiornaFattura(record) .. sectionauthor:: Davide Paci