6739e4926ba7ebb7375a51fc4cb706e04768afc7
Covers anonymous/non-admin access (404), and the full admin flow: switch table, edit a subscriptions.prix_ht cell through the real DataTable UI, verify the write lands in the DB, and verify the edit is logged and visible in the admin_actions table. tests/users.test.sqlite is committed and shared by the whole Selenium session, so _cleanup_user deletes every row the tests create. Beyond resetting sqlite_sequence (already needed for the AUTOINCREMENT counter), a plain DELETE also leaves stale, never-zeroed bytes behind in the admin_actions/subscriptions b-tree pages once they go back to zero rows, which byte-diffs the file even though its logical content is unchanged. VACUUM rebuilds the file from live data only, producing a deterministic page layout (verified empirically across independent runs with different random test data). Re-baselined the fixture to that canonical vacuumed state so `git status` stays clean after running the suite.
colibre
Note: Ce projet a été rebaptisé de decp.info à colibre en 2026.
Outil d'exploration et de téléchargement des données essentielles de la commande publique.
=> colibre.fr
Installation et lancement
# Copie et personnalisation du .env
cp template.env .env
nano .env
# Pour la production
uv run gunicorn app:server
# Pour avoir le debuggage et le hot reload
uv run run.py
Déploiement
- Production (branche
main, colibre.fr) : déploiement manuel via un déclenchement de la Github Action Déploiement - Test (branche
dev, test.colibre.fr) : déploiement automatique à chaque push sur la branchedev, via la même Github Action.
Ne pas oublier de mettre à jour les fichier .env.
Sauvegarde de la base utilisateurs
users.sqlite est sauvegardée toutes les heures sur S3 via un timer systemd. Pour lister les sauvegardes disponibles :
python -m src.backup list
Pour restaurer une sauvegarde, arrêtez le service, restaurez la base, puis redémarrez :
systemctl stop colibre
python -m src.backup restore backups/users-YYYYMMDDTHHMMSSZ.sqlite.gz.enc
systemctl start colibre
Migrations de base de données
Les migrations SQLite s'appliquent automatiquement au démarrage de l'app — aucune action manuelle requise. Il suffit de redémarrer le service après un déploiement.
Pour vérifier quelles migrations ont été appliquées :
sqlite3 users.sqlite "SELECT id, applied_at FROM schema_migrations ORDER BY applied_at;"
Pour ajouter une migration, voir les instructions dans src/migrations.py.
Liens connexes
- decp-processing (traitement et publication des données)
- colin.maudry.com (blog)
Notes de version
Voir CHANGELOG.
Description
Outil d'exploration et de téléchargement des données essentielles de la commande publique
Releases
33
Languages
Python
95.2%
CSS
3.6%
JavaScript
1.2%