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&parametro2=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 Implementare una ViewResource e come 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):

Nota

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.

Autore della sezione: Valter Vettorello