GN2PG Client
This project provides an import data from GeoNature instances to a PostgreSQL database (client side).
Widely inspired from ClientApiVN
[!WARNING]
The minimum version of the source GeoNature instance required for the incremental update must be a version 2.12.0
Project Setup
GN2PG Client can be installed by running pip
. It requires Python 3.7.4 or above to run.
pip install gn2pg-client
Issues
Please report any bugs or requests that you have using the GitHub issue tracker!
HowTo
Help
gn2pg_cli --help
Init config file
This command init a TOML config file within ~/.gn2pg
hidden directory (in user HOME
directory), named as you want. PLEASE DO NOT SPECIFY PATH!
gn2pg_cli --init <myconfigfile>
Config file is structured as this. [[source]]
block can be duplicate as many as needed (one block for each source).
The data_type
value on each source is used to characterize the type of data. This value is used to identify which triggers to be triggered when inserting, updating or deleting data.
Current provided trigger configs are:
synthese_with_cd_nomenclature
which provide triggers to insert basically data on synthese and generate basic metadatas (acquisition framework and datasets). Source query sample is provided in file geonature_export_sinp_with_cd_nomenclature.sqlsynthese_with_metadata
which provide triggers to insert data in synthese and populate most of the metadata data (acquisition frameworks, datasets, actors such as organisms and roles, territories, etc.). Source query sample is provided in file geonature_export_sinp_with_metadata.sql
[db]
db_host = "localhost"
db_port = 5432
db_user = "<dbUser>"
db_password = "<dbPassword>"
db_name = "<dbName>"
db_schema_import = "schema"
[db.db_querystring]
sslmode = "prefer"
[[source]]
name = "Source1"
user_name = "<monuser>"
user_password = "<monPwd>"
url = "<http://geonature1/>"
export_id = 1
data_type = "synthese_with_cd_nomenclature"
[[source]]
name = "Source2"
user_name = "<monuser>"
user_password = "<monPwd>"
url = "<http://geonature2/>"
export_id = 1
data_type = "synthese_with_cd_nomenclature"
[!TIP]
You can add variable in source block enable = false
to disable a source
InitDB Schema and tables
To create json tables where datas will be stored, run :
gn2pg_cli --json-tables-create <myconfigfile>
Full download
To download all datas from API, run :
gn2pg_cli --full <myconfigfile>
Incremental download
To update data since last download, run :
gn2pg_cli --update <myconfigfile>
To automate the launching of updates, you can write the cron task using the following command, for example every 30 minutes.
*/30 * * * * /usr/bin/env bash -c "source <path to python environment>/bin/activate && gn2pg_cli --update <myconfigfile>" > /dev/null 2>&1
Debug mode
Debug mode can be activated using --verbose
CLI argument
Logs
Log files are stored in $HOME/.gn2pg/log
directory.
Import datas into GeoNature database
Default script to auto populate GeoNature is called "to_gnsynthese".
gn2pg_cli --custom-script to_gnsynthese <myconfigfile>
[!TIP]
You can also replacing synthese script by your own scripts, using file path instead of to_gnsynthese
.
Dashboard
A simple web dashboard can be run following dashboard docs.
Contributing
All devs must be done in forks (see GitHub doc).
Pull requests must be pulled to dev
branch.
Install project and development requirements (require poetry):
poetry install --with=docs --all-extras
poetry run pre-commit install
Make your devs and pull requests.
Test gn2pg_cli
in dev mode by running this command:
poetry run gn2pg_cli <options>
Licence
GNU AGPLv3
Team
- @ophdlv (Natural Solution), contributor
- @mvergez (Natural Solution), contributor
- @andriacap (Natural Solution), contributor
- @Adrien-Pajot (Natural Solution), contributor
With the financial support of the DREAL Auvergne-Rhône-Alpes and the Office français de la biodiversité.