Progetto

Un progetto Genropy è un raccoglitore di istanze (instances) e packages (packages): l”istanza è lo strumento di collegamento a un database, il package è l’insieme delle tabelle del database che servono a implementare un’area funzionale dell’applicativo.

Ogni progetto di Genropy può essere costituito da una o più istanze, così come da uno o più package, e gli stessi package possono essere condivisi tra più progetti. Solitamente il progetto coincide con il repository dell’applicativo su Git.

È possibile vedere all’opera la struttura di un progetto nel progetto Sandbox, che abbiamo costruito passo-passo durante il Tutorial di Fatturazione

Creare un progetto

Il primo passo quindi è la creazione di un progetto, che si può lanciare direttamente da Terminale con una semplice riga di comando:

gnrmkproject nome_cartella.nome_progetto -i nome_istanza -P nome_package -A "gnrcore:sys,gnrcore:adm"

Ad esempio, nel Tutorial di Fatturazione creiamo il progetto fatturazione, contenente l’istanza myfatturazione, il package fatt e i package core adm, sys, e glbl:

gnrmkproject custom.fatturazione -i myfatturazione -P fatt -A "gnrcore:sys,gnrcore:adm,gnr_it:glbl"

gnrmkproject si occupa di lanciare lo script di generazione del progetto, ovvero quello che creerà fisicamente la cartella con il nome del progetto all’interno della cartella da noi indicata (in questo caso custom, contenente tutti i progetti di Genropy) e le sottocartelle instances e packages.

Con l’attributo -i possiamo contestualmente creare un’istanza, con -P possiamo contestualmente creare il main package, mentre con -A richiediamo l’aggiunta dei package core.

Suggerimento

Si noti che per la creazione di un progetto non è necessaria la contestuale creazione né di un’istanza né di un package: un progetto può infatti essere anche totalmente vuoto.

Setup del database

Prima di avviare l’applicativo, e ad ogni aggiornamento del modello, è necessario effettuare una dbsetup.

Avviare l’applicativo

Sia in ambiente di produzione che in locale è possibile istanziare un applicativo Genropy eseguendo in una finestra di Terminale il processo gnrdaemon:

gnrdaemon

e al contempo avviando in un’altra finestra di terminale il processo gnrwsgiserve:

gnrwsgiserve sandboxpg

Quest’ultimo processo si occuperà di istanziare l’applicativo e servire il relativo site sulla porta desiderata. È infatti possibile specificare una porta utilizzando l’attributo -p, oppure richiedere modalità differenti, per esempio specificare l’utilizzo dei --websocket, la modalità di --remote_edit, o ancora di --debug.

_images/gnrdaemon.gif
Parametri di avvio di gnrwsgiserve

Parametro

Contenuto

–port / -p

Permette di avviare il server su una porta specifica (es: -p 8081)

–host / -h

Permette di indicare un host particolare (es: -h 10.0.0.1)

–websocket

Permette di avviare l’istanza usando i websocket

-tornado / -t

Permette di avviare l’istanza usando tornado

–remote_edit

Permette di avviare l’istanza con la modalità di remote edit

–restore /

Permette di lanciare la procedura di restore del database

–ssl

Permette di avviare l’applicativo in https, utilizzando un certificato SSL

Suggerimento

Per una lista completa dei comandi disponibili, lancia il comando gnrwsgiserve -h

Alternativamente, in un qualsiasi terminale è possibile istanziare l’applicativo (l’oggetto GnrApp) passando il nome dell’istanza:

from gnr.app.gnrapp import GnrApp
app = GnrApp('sandboxpg')

È quindi sufficiente la sola istanza ad avviare l’applicativo a tutti gli effetti. Questo ci consentirà anche da terminale di esplorare il model, la sua struttura in termini di packages e tables, eseguire anche operazioni di lettura e scrittura direttamente da linea di comando.

Autore della sezione: Davide Paci