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%'"