Come ricreare l'ambiente di sviluppo in Ubuntu 8.10
Se ancora non abbiamo scaricato i sorgenti dell'ultima versione di PyPaPi, possiamo farlo direttamente dal repository: come primo passo abbiamo bisogno di installare darcs, lo strumento utilizzato per il versionamento di PyPaPi. Apriamo una console e digitiamo:
$ sudo apt-get install darcs
A questo punto possiamo scaricare i sorgenti di PyPaPi dal repository ufficiale:
$ darcs get http://darcs.pypapi.org/pypapi
PyPaPi utilizza Postgresql come motore di database:
$ apt-get update $ sudo apt-get install build-essential $ sudo apt-get install postgresql-8.3 $ sudo apt-get install postgresql-server-dev-8.3 $ sudo apt-get install postgresql-autodoc
Tutti gli esempi e i test vengono condotti dall'utente di sistema, che dovrà quindi essere creato anche in Postgres:
$ sudo su - postgres $ createuser -s -d -r nomeutente $ exit
Per comodità consentiamo l'accesso a Postgres senza password all'utente appena creato, editando il file pg_hba.conf:
$ sudo nano /etc/postgresql/8.3/main/pg_hba.conf
aggiungendo la seguente riga (sostituite 'nomeutente' con il login name):
# IPv4 local connections: host all nomeutente 127.0.0.1/32 trust
Sarà necessario riavviare Postgres per rendere effettive le modifiche:
$ sudo /etc/init.d/postgresql-8.3 restart
Abbiamo bisogno di alcune dipendenze Python per poter creare il database:
$ sudo apt-get install python-dev $ wget http://peak.telecommunity.com/dist/ez_setup.py $ sudo python ez_setup.py $ sudo easy_install docutils $ sudo easy_install psycopg2
A questo punto entriamo nella cartella dei sorgenti di PyPaPi, e lanciamo il comando di make per la generazione del database con i dati minimali:
$ cd pypapi/docs/database/ $ make scratch
Se il comando è andato a buon fine possiamo verificare la presenza dell'utente 'admin' nella tabella degli utenti (unico utente di PyPaPi per ora esistente):
$ psql pypapi -c 'select login, nominativo from anagrafiche.utenti' login | nominativo -------+----------------------- admin | Utente amministratore (1 row)
Viene anche prodotto nella cartella docs/database un dump (pypapi.dump) utilizzabile per inizializzare il database su un'installazione senza le dipendendenze python installate poc'anzi.
Con il seguente comando make è invece possibile generare nella cartella docs/database della documentazione (html, gif, dia, etc) relativa alla struttura del database di PyPaPi:
$ make all
Per eseguire i test funzionali, e per lanciare le applicazioni PyPaPi è necessario procurarsi qualche componente in più:
$ sudo easy_install nose $ sudo apt-get install python-qt4 $ cd ../../ $ sudo python setup.py install
Alternativamente python setup.py develop, che crea un link simbolico che punta alla directory di lavoro.
E lanciamo i test:
$ cd docs/database/ $ make test
Se tutto è andato per il verso giusto dovremmo trovarci con un messaggio rassicurante in fondo:
OK Test ran successfully.
e con un database contenente alcuni dati dimostrativi.
Come ultimo atto, possiamo eseguire le applicazioni PyPaPi. Per l'amministrazione possiamo usare l'utente admin con password 'pypapi', e creare utenti e uffici a piacere. E' sempre possibile anche collegarsi con l'utente di sistema (senza password, dando semplicemente invio), poiché è stato creato dai test un utente omonimo nel database:
$ cd ../../apps $ python ppp.py -c ../lib/pypapi/app/amministrazione.conf $ python ppp.py -c ../lib/pypapi/app/protocollo.conf $ python ppp.py -c ../lib/pypapi/app/pratiche.conf
Sistema di stampa
PyPaPi basa le sue stampe sull'ottimo OpenRPT. Per l'installazione è possibile scaricare direttamente i binari da qui, oppure dedicarsi alla compilazione a mano.
In questa seconda ipotesi avrmo bisogno di scaricare gli strumenti base Debian per la compilazione:
$ sudo apt-get install build-essential
Esco dalla cartella di PyPaPi, quindi scarico e compilo i sorgenti OpenRPT.
$ cd ../../ $ wget http://www.xtuple.org/index.php?option=com_docman&task=doc_download&gid=623&Itemid=50 $ tar xvfj openrpt-3.0.0-source.tar.bz2 $ cd openrpt-3.0.0-source/ $ qmake $ make
Per potersi connettere al database OpenRPT fa uso del driver Postgres delle Qt4:
$ sudo apt-get install libqt4-sql-psql
Facciamo un test brutale di stampa:
$ cd bin $ export PATH=$PATH:$(pwd) $ cd ../../PyPaPi/apps $ rptrender -databaseURL=psql://127.0.0.1/pypapi:5432 -username=$USERNAME -noAuth ../lib/pypapi/app/generale/report/utenti.xml
E scegliamo di guardare un'anteprima: dovrebbe apparire l'elenco degli utenti di PyPaPi.
Variabili d'ambiente
La configurazione di rete di un ambiente PyPaPi è controllata da alcune variabili d'ambiente. Ove omesse i comandi make si collegano a PostgreSQL su localhost, porta standard 5432, cercando di utilizzare l'utente locale.
# accesso a PostgreSql tramite make e psql. DBHOST=192.168.1.216 DBNAME=pypapi DBPORT=5432 # accesso a PostgreSql dal client PyPaPi PYPAPI_DB="postgres://%(username)s:%(password)s@host:port/pypapi" # indirizzo e porta del server documentale http PYPAPI_DOCSERVER='127.0.0.1:8080' # lo stesso parametro può essere utilizzato dalla riga di comando, ad es.: ppp.py -c ../lib/pypapi/app/protocollo.conf -d "postgres://%(username)s:%(password)s@192.168.1.216:5432/pypapi"
Ci sono dei parametri aggiuntivi per il lancio di ppp.py (utilizzare --help per averne una stampa a video:
Usage: ppp.py [opzioni] [config-name=value...]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-c FILE, --config-file=FILE
Usa il FILE specificato come configurazione
-s FILE, --schema-file=FILE
Usa il FILE specificato come schema di configurazione
-d DATABASEURI, --database-uri=DATABASEURI
URI del database (ha la precedenza rispetto a
quantodefinito nel config-file).
-o OOOCONNECTION, --ooo-connection=OOOCONNECTION
Stringa di connessione a OpenOffice.Org (ha la
precedenza rispetto aquanto definito nel config-file).
-f FORMNAME, --form=FORMNAME
Form da aprire
-k FILTER, --filter=FILTER
Chiave di ricerca per l'elemento da selezionare nel
formaperto con lo switch -f
Ad esempio, per accedere direttamente all'applicazione autenticandosi con l'utente tl su 192.168.1.8, aprire la maschera dei protocolli e ricercare quelli che iniziano con Quarto, possiamo procedere come segue:
ppp.py -c ../lib/pypapi/app/protocollo.conf -d "postgres://tl:bodybalance@192.168.1.8:5432/pypapi" -f Protocolli -k "oggetto like 'Quarto%'"
