Skip to content
This repository has been archived by the owner on Aug 24, 2020. It is now read-only.

SocialGouv/dila2sql

 
 

Repository files navigation

dila2sql

DILA2SQL Logo

Ce mono-repository contient trois packages:

  • dila2sql: générer des bases SQL à partir des exports publiés au format XML par la DILA (Direction de l’information légale et administrative).
  • dilajs: librairie NodeJS qui permet d'accéder à une base PostgreSQL générée par dila2sql
  • api: API Express qui expose la base générée en utilisant dila.js

Le package dila2sql est un fork du projet legi.py créé par Legilibre et @Changaco et contributeurs.

Bases SQL accessibles publiquement ☁️

Pour permettre une réutilisation simple, le projet dila2sql est hébergé par l'Incubateur des Ministères Sociaux.

L'incubateur propose un accès public gratuit aux bases SQL générées et mises à jour quotidiennement à cette adresse : https://dumps.dila2sql.num.social.gouv.fr/

Pour récupérer un dump:

docker-compose exec -T db psql -U dila2sql kali < ~/Downloads/kali_2019_06_18.sql

Note: La seule source officielle de droit est Legifrance, ces bases fournissent uniquement un accès informel plus pratique. Des erreurs peuvent avoir été introduites par ce projet.

Utilisation avec Docker

Créer dila2sql/.env depuis dila2sql/.env.sample

# lancer tous les containers
docker-compose up -d

# créer la base de donnée
docker-compose exec db psql -U dila2sql -c "CREATE DATABASE kali"

# lancer le téléchargement + l'imports des dumps XML originaux depuis
# Legifrance dans une base Postgres
docker-compose run --rm dila2sql python -m dila2sql.runner --db-url postgresql://dila2sql:dila2sql@db/kali --base KALI --raw

Ce processus peut être décliné pour les bases LEGI ou JORF.

Développer sans Docker

À la racine du projet, lancez yarn install. Puis :

cd packages/api
yarn dev

yarn fera alors le lien entre les différents packages locaux : principalement l'API qui utilise le package dila.js. Les modifications que vous ferez en local sur le package de l'API ou le package dila.js seront automatiquement prises en compte grâce à nodemon qui redémarre le serveur lors d'un changement de fichier.

Vous pouvez aussi vous développer indépendamment sur dila.js en vous plaçant dans packages/dila.js et en lançant les exemples ou les tests :

cd packages/dila.js
DB_URL=postgresql://localhost/kali node examples/getSommaireConteneur.js

Développer avec Docker

⚠️ Il est conseillé de développer sans Docker pour plus de simplicité et avoir un live reload du code simple.

Lancez les commandes en montant le code local vers le chemin du code applicatif dans le container pour utiliser le code local plutôt que celui de l'image buildée.

# Ex: lancer le téléchargement des dumps
docker-compose run --rm -v $PWD/packages/dila2sql:/app dila2sql python -m dila2sql.download --base KALI

Mise à jour quotidiennes

sudo crontab -e

0 3 * * * cd /home/incubateur/dila2sql && docker-compose run --rm dila2sql python -m dila2sql.runner --db-url postgresql://dila2sql:dila2sql@db/kali --base KALI --raw >/dev/null 2>&1
0 4 * * * cd /home/incubateur/dila2sql && docker-compose exec db /bin/sh /var/lib/dila2sql/scripts/dump_db.sh kali
30 4 * * * cd /home/incubateur/dila2sql && docker-compose run --rm dila2sql python -m dila2sql.scripts.export_conteneurs postgres://dila2sql:dila2sql@db/kali
0 5 * * * cd /home/incubateur/dila2sql && docker-compose run --rm dila2sql python3 -m dila2sql.html_exporter.html_exporter --api-url http://api:8080

Contribuer

Les Pull Requests sont bienvenues.

Les autres bases de la DILA sont disponibles dans des dumps XML similaires, il devrait donc être relativement aisé d'adapter dila2sql pour les supporter.

Projets connexes

Licence

CC0 Public Domain Dedication

About

Outils pour générer des bases SQL à partir des jeux de données légales de la DILA

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 73.3%
  • JavaScript 17.0%
  • TSQL 7.3%
  • HTML 1.4%
  • Other 1.0%