Agenda culturel
L'agenda culturel est un projet django créé à partir de Django Docker Quickstard pour faciliter son développement et déploiement. Il est distribué sous licence AGPL.
Une instance de démonstration est disponible à l'adresse https://pommesdelune.fr/.
Parmi les outils et ressources sur lesquelles s'appuie l'agenda culturel, on peut lister:
Installation
Pour installer une version de développement, reportez-vous à la documentation de Django Docker Quickstard. En résumé:
git pullmake build-dev
On peut aussi peupler les catégories avec un choix de catégories élémentaires:
make create-categories
On peut aussi peupler les positions de référence qui serviront aux recherches géographiques avec la commande, après avoir éventuellement modifié le fichier communes.json qui contient pour l'exemple toutes les communes récupérées depuis public.opendatasoft.com:
make create-reference-locations
Utilisation d'un proxy socket
On peut activer à la main (pour l'instant) un proxy type socket pour l'import d'événements.
- se connecter au docker du celery worker : 
docker exec -it agenda_culturel-celery-worker bash - mettre à jour les dépôts 
apt update - installer le client ssh 
apt install ssh-client - créer un socket ssh 
ssh -D 12345 USER@HOST - modifier le drapeau proxy dans le constructeur de downloader.py.
 
Notes aux développeurs
Ajout d'une nouvelle source custom
Pour ajouter une nouvelle source custom:
- ajouter un fichier dans 
src/agenda_culturel/import_tasks/custom_extractors(ousrc/agenda_culturel/import_tasks/generic_extractorss'il s'agit d'un format de source qui est réutilisable) en s'inspirant des autres fichiers présents. Il existe de nombreuses facilités dans les classes mères correspondantes - s'inspirer des scripts présents dans 
experimentations/pour créer son propre script de test - quand l'import fonctionne de manière indépendante dans ces expérimentations, il est tant de l'ajouter au site internet:
- ajouter à la classe 
RecurrentImport.PROCESSORprésente dans le fichiersrc/agenda_culturel/models.pyune entrée correspondant à cette source pour qu'elle soit proposée aux utilisateurs - ajouter à la fonction 
run_recurrent_importprésente dans le fichiersrc/agenda_culturel/celery.pyle test correspondant à cet ajout, pour lancer le bon extracteur 
 - ajouter à la classe 
 - se rendre sur le site, page administration, et ajouter un import récurrent correspondant à cette nouvelle source
 
Récupérer un dump du prod sur un serveur dev
- sur le serveur de prod:
docker exec -i agenda_culturel-backend python3 manage.py dumpdata --natural-foreign --natural-primary --format=json --exclude=admin.logentry --indent=2 > fixtures/postgres-backup-20241101.json(à noter qu'ici on oublie les comptes, qu'il faudra recréer)
 - sur le serveur de dev:
- On récupère le dump json 
scp $SERVEUR:$PATH/fixtures/postgres-backup-20241101.json src/fixtures/ scripts/reset-database.sh FIXTURE COMMIToùFIXTUREest le timestamp dans le nom de la fixture, etCOMMITest l'ID du commit git correspondant à celle en prod sur le serveur au moment de la création de la fixture
 - On récupère le dump json 
 
On peut ensuite modifier le mot de passe de l'utilisateur root qui a tous les droits:
docker exec -it agenda_culturel-backend python3 manage.py changepassword root
À noter que les images ne sont pas récupérées. Les images des catégories peuvent être récupérées par la commande:
cp src/agenda_culturel/migrations/images/* src/media/
Complètement réinitialiser une instance
docker compose down --rmi all --volumes