Tabelle di Attachment

Come gestire gli allegati con le Attachments Tables

Alcune tabelle possono avere necessità di gestire del materiale in allegato. Si pensi per esempio a una tabella prodotti, dove al record del prodotto si vuole anche allegare un pdf con le schede tecniche. Per la gestione degli allegati Genropy mette a disposizione uno strumento ad hoc, l”Attachments Table, che di fatto ridefinisce la normale table di Genropy in modo da instaurare una relazione implicita tra la tabella principale e un nodo di storage per il caricamento fisico del file in allegato.

Come definire una Attachments Table

Per creare una tabella di Attachments che sia di appoggio alla tabella principale prodotto è sufficiente quindi creare nella solita cartella model un file prodotto_atc.py così definito:

from gnr.app.gnrdbo import AttachmentTable

class Table(AttachmentTable):
    pass

Con queste due sole righe l” AttachmentTable farà tutto in automatico. Si noti che non abbiamo specificato nemmeno il nome della tabella, perché questo verrà letto dal nome del file dal sistema. L’unico accorgimento è che il nome del file deve obbligatoriamente essere nella forma nometabellaprincipale_atc.py.

Per la successiva visualizzazione del campo di caricamento e visualizzazione degli allegati, sarà necessario nella Form della risorsa th richiamare lo strumento desiderato a scelta tra:

  • attachmentMultiButtonFrame, che mostrerà una bottoniera nella parte superiore con i diversi allegati

  • attachmentPane, che mostrerà un pannello con una sidebar laterale e l’allegato selezionato sul lato destro

  • attachmentGrid, come il precedente ma con un titolo e la possibilità di rimuovere gli allegati

  • attachmentGallery, sempre con una sidebar laterale ma con le icone degli allegati invece della griglia

La chiamata per lo strumento è semplicemente questa:

def allegatiProdotto(self,pane):
    pane.attachmentMultiButtonFrame()

Suggerimento

Si noti che per il corretto funzionamento del component è necessario preventivamente specificarne l’importazione nella classe Form:

class Form(BaseComponent):
  py_requires="gnrcomponents/attachmanager/attachmanager:AttachManager"

Per un esempio di trattazione su come gestire file in Genropy utilizzando le tabelle di attachment si rimanda a questo articolo sul nostro Blog

Autore della sezione: Davide Paci