# Agenda culturel L'agenda culturel est un projet django créé à partir de [Django Docker Quickstard](https://github.com/godd0t/django-docker-quickstart/) pour faciliter son développemnt et déploiement. Il est distribué sous licence AGPL. Une instance de démonstration est disponible à l'adresse https://pommesdelune.fr/. ## Installation Pour installer une version de développement, reportez-vous à la documentation de [Django Docker Quickstard](https://github.com/godd0t/django-docker-quickstart/). En résumé: * ```git pull``` * ```make 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](./src/scripts/communes.json) qui contient pour l'exemple toutes les communes récupérées depuis [public.opendatasoft.com](https://public.opendatasoft.com/explore/dataset/georef-france-commune/export/?flg=fr-fr&disjunctive.reg_name&disjunctive.dep_name&disjunctive.arrdep_name&disjunctive.ze2020_name&disjunctive.bv2022_name&disjunctive.epci_name&disjunctive.ept_name&disjunctive.com_name&disjunctive.ze2010_name&disjunctive.com_is_mountain_area&sort=year&refine.dep_name=Puy-de-D%C3%B4me&location=9,45.51597,3.05969&basemap=jawg.light): * ```make create-reference-locations``` ## 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``` 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.PROCESSOR``` présente dans le fichier ```src/agenda_culturel/models.py``` une entrée correspondant à cette source pour qu'elle soit proposée aux utilisateurs - ajouter à la fonction ```run_recurrent_import``` présente dans le fichier ```src/agenda_culturel/celery.py``` le test correspondant à cet ajout, pour lancer le bon extracteur - 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 dev: * ```docker exec -i agenda_culturel-backend python3 manage.py dumpdata --format=json --exclude=admin.logentry --exclude=auth.group --exclude=auth.permission --exclude=auth.user --exclude=contenttypes --indent=2 > fixtures/postgres-backup-20241101.json``` (à noter qu'ici on oublie les comptes, qu'il faudra recréer) * sur le serveur de prod: * On supprime la base de données: ```docker exec -i agenda_culturel-backend python3 manage.py flush``` * On réinitialise l'état de la base de données: ```docker exec -i agenda_culturel-backend python3 manage.py migrate agenda_culturel zero``` * On reprend à un état de migration équivalent au serveur: ```docker exec -i agenda_culturel-backend python3 manage.py migrate agenda_culturel [00xx]``` * On récupère le dump json ```scp $SERVEUR:$PATH/fixtures/postgres-backup-20241101.json src/fixtures/``` * On l'importe: ```docker exec -i agenda_culturel-backend python3 manage.py loaddata --format=json fixtures/postgres-backup-20241101.json``` À noter qu'on a supprimé de la base de donnée les comptes, et qu'il faudra les recréer: * ```docker exec -ti agenda_culturel-backend python3 manage.py createsuperuser``` De plus, les images ne sont pas récupérées.