Questo è il back-end dell'applicativo per il controllo dei livelli di legionella per la pubblica amministrazione. Si tratta di un progetto django che espone delle API GraphQL. Questo backend è accoppiato ad una applicazione React disponibile nel repo legionella-frontend con la quale è stata creata l'interfaccia grafica di questo progetto.
Per utilizzare/sviluppare questo prodotto, seguire le istruzioni seguenti. Per utilizzare la build dell'applicazione React in sviluppo sul proprio server di sviluppo in locale, seguire le semplici istruzioni al paragrago React frontend build più sotto.
Gli ambienti di sviluppo e di produzione girano con settaggi differenti. Per questo motivo:
manage.py
: da usare per la produzione. Utilizza il filesetting.py
managedev.py
: da usare per lo sviluppo. Utilizza il filesettingsdev.py
Come spiegato nel paragrafo relativo ai
settings privati, le
impostazioni che devono rimanere segrete vanno messe in
<projectfolder>/config/omissis.py
.
Note: There is a bash script development
. If you need to run python manage.py
,
you can type ./development
instead (sparing some typing). So you can do
something like ./development runserver
.
Make sure you have a PostgreSQL db with version > 9.3 otherwise you won't be able to use it with this project (we need JSON fields).
- Create the DB in PostgreSQL:
CREATE DATABASE <db_name>;
- You also want a user with permission to use this db.
Later on... Take notes of the data needed to connect to your DB and put them in
legionella/omissis.py
, filling the correct variables in the db configuration.
virtualenv .
. bin/activate
pip install -r requirements.txt
cd legionella
cp legionella/omissis.py.template legionella/omissis.py
Now it's time to configure the DB in omissis.py. Fill the correct fields.
This will create all the tables needed for your project.
python manage.py makemigrations
python manage.py migrate
This command will create some dummy data to get you going with the work.
python manage.py populatedb
When bootstrapping the production application, the right command is:
python manage.py populateproddb
This one will create only 'real' data.
python manage.py createsuperuser
python manage.py runserver
The dev server listen to the port 8000
.
To explore everything about the APIs available you can use the graphical
interactive in-browser GraphQL IDE: GraphiQL
.
First, login as an active user here http://localhost:8000/amministrazione to get your authentication token. Then visit http://localhost:8000/graphqlapp/graphqlapp and you are good to go.
More info about the GraphiQL
usage can be found here.
For development purpose: Put the build
folder inside the frontend
folder.
Django will serve the react application.
The request's route to export the data to an excel file is:
/graphqlapp/download
It accepts both GET
and POST
requests.
Parameters:
startDate
endDate
both in the form YYYY-MM-DD
. If they aren't both specified, we fall back as
usual: take the last two years.
Example:
localhost:8000/graphqlapp/download?startDate=2018-03-01&endDate=2018-04-05
localhost:8000/graphqlapp/download
- version 0.5.0 in production on 20/04/2018