.. _orm_genropy/triggers/duplicate: Trigger alla duplicazione ========================= La duplicazione consiste nella copia fedele del record selezionato. Può essere attivata nella `Form di un TableHandler `_ con il parametro ``duplicate=True``. La duplicazione è un processo totalmente automatizzato, che terrà automaticamente in conto una serie di accorgimenti necessari per preservare l'integrità del database. Saranno per esempio escluse tutte le :ref:`colonne di sistema` nonché i campi che presentano l'attributo ``unique=True``. Tuttavia, è possibile intervenire nel processo di duplicazione fornendo particolari disposizioni in merito al record generato tramite copia, questo attraverso i metodi *onDuplicating* e *onDuplicated*. onDuplicating e onDuplicated ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I metodi di hook *onDuplicating* e *onDuplicated*, che alla stregua dei :ref:`Trigger` scattano rispettivamente *prima* e *dopo* la *insert* del record, possono essere utilizzati per modificare automaticamente un record duplicato assegnandogli dei valori di default che invece ai record non copiati non vogliamo assegnare :: def onDuplicating(self, record): record['confirmed'] = 'False' record['published'] = 'False' record['date'] = self.db.workdate record['time'] = datetime.now() Una versione speciale di questi metodi *hook* è l'``onDuplicating_many``, che consente la copia multipla dei record dall'apposita icona nella `Form di un TableHandler `_ tenendo premuto il tasto Maiusc. Riceve, oltre al record, i parametri ``copy_number`` (I) e ``copy_label`` (T):: def onDuplicating_many(self, record, copy_number=None, copy_label=None): record['descrizione'] = '{descrizione}{label}'.format(descrizione=record['descrizione'], label=copy_label) .. hint:: Ti interessa un approfondimento sulla duplicazione dei record? Leggi l'articolo sul nostro blog `Come duplicare un record `_ .. sectionauthor:: Davide Paci