.. _orm_genropy/tables/attachments_table: 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 :ref:`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() .. hint:: 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 `_ .. sectionauthor:: Davide Paci