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 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 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)

Suggerimento

Ti interessa un approfondimento sulla duplicazione dei record? Leggi l’articolo sul nostro blog Come duplicare un record

Autore della sezione: Davide Paci