.. _tablehandler/th_resource: La risorsa th ============= Introduzione ------------ Genropy ha un sofisticato motore di renderizzazione e invio di una pagina al client che dispone al suo interno di tutto ciò che gli permette di elaborare la richiesta e restituirci una pagina renderizzata. Se ad esempio all'interno del progetto `Sandbox `_ effettuassimo la richiesta: :: http://127.0.0.1/sys/thpage/glbl/provincia http://127.0.0.1/sys/thpage/fatt/fattura dove ``sys/thpage`` è il percorso del modulo di gestione della pagina che riceve come parametri il ``package`` e il model della ``tabella``, avremmo come risposta la renderizzazione di una webpage contenente la **grid di gestione delle province** fuori dalla tipica interfaccia di Genropy (priva quindi di bottoni e menu laterale). Di fatto la richiesta si compone di una pagina generica :: http://127.0.0.1/sys/thpage a cui vengono passati due parametri posizionali ``package`` e ``tabella`` mentre eventuali altri parametri successivi passati nella forma :: ?parametro1=valore1¶metro2=valore2 verrebbero passati alla pagina come *kwargs*, ricevuti dal main della pagina stessa. Posto quindi che la **thpage** è una **pagina generica dotata di sofisticati meccanismi di funzionamento**, definire una *risorsa th_* si traduce nel definire le regole di comportamento che dovrà avere la thpage per il rendering specifico di una determinata pagina utilizando quanto definito nella th_resource. Vediamo quindi come implementare la risorsa in tutte le sue componenti fondamentali, in particolare come :ref:`Implementare una ViewResource` e come :ref:`Implementare una FormResource` . Definizione di una risorsa -------------------------- Definire una th_resource significa definire **tutte le regole che la th_page utilizzerà per renderizzare la nostra tabella** e che saranno utilizzate per modificare il comportamento standard della th_page, sia per quanto riguarda la view (quindi la vista a griglia) sia relativamente alla form di gestione del singolo record. Riprendendo la nostra tabella ``cliente`` del progetto `Sandbox `_ troveremmo: - un file ``cliente.py`` all'interno della cartella model del package - ed uno nella cartella *resources > tables > cliente* (lo stesso nome del model) che si chiamerà ``th_cliente.py`` La struttura sarà pertanto la seguente:: resources tables cliente th_cliente.py All'interno del file possono essere contenute diverse classi (come vedremo in seguito) ma al minimo ne troveremo due, una per la visualizzazione della griglia ed una per la presentazione della form di gestione di ciascun record della tabella. Le due classi sono le seguenti:: class View(BaseComponent): class Form(BaseComponent): .. note :: La versione attuale della classe View eredita da **BaseView** mentre la classe Form eredita da **BaseForm** tuttavia potresti trovare vecchi progetti che ereditano da **BaseComponent**, i progetti funzioneranno comunque correttamente. È suggeribile, in fase di revisione o modifica di parti del progetto, adottare le nuove regole: **class View(BaseView):** **class Form(BaseForm):** che gestiscono rispettivamente la visualizzazione della griglia e la visualizzazione della form di gestione dei dati di ciascun record. .. sectionauthor:: Valter Vettorello