diff --git a/docs/dev/transition.rst b/docs/dev/transition.rst new file mode 100644 index 0000000..1d44da2 --- /dev/null +++ b/docs/dev/transition.rst @@ -0,0 +1,194 @@ +Transition d'années +=================== + +Entre deux sessions du TFJM², certaines opérations doivent être effectuées chaque année, +afin de réinitialiser les données et de passer à l'année suivante. + +Réinitialisation de la base de données +-------------------------------------- + +Conservation des autorisations de droit à l'image +""""""""""""""""""""""""""""""""""""""""""""""""" + +La base de données du TFJM² est supprimée chaque année, avant chaque tournoi. Il n'y a +pas de conservation de données personnelles à l'exception des autorisations de droit +à l'image qui doivent être conservées pour des raisons légales pendant 5 ans. + +Elles doivent alors être stockées sur Owncloud. Pour cela, il faut commencer par créer +un dossier dans Owncloud, qui stockera lesdites autorisations. + +Rendez-vous ensuite dans le conteneur Docker et exécuter le script : + +.. code:: bash + + ./manage.py export_photo_authorizations + +Cela a pour effet de générer un dossier dans ``output/photo_authorizations``, qui contient +un dossier par équipe avec les différentes autorisations de droit à l'image. + +Il faut maintenant récupérer ce dossier. Sortir du conteneur, et exécuter dans ``/srv/TFJM`` : + +.. code:: bash + + sudo docker cp tfjm_plateforme_1:/code/output/photo_authorizations . + sudo mv photo_authorizations/* "data/owncloud/files/Emmy/Autorisations de droit à l'image/Autorisations de droit à l'image 2024/" + sudo chown -R www-data:root "data/owncloud/files/Emmy/Autorisations de droit à l'image/Autorisations de droit à l'image 2024" + sudo rmdir photo_authorizations + +Il faut enfin réactualiser Owncloud. Exécuter en tant que www-data : + +.. code:: bash + + sudo docker compose exec -u www-data cloud php occ files:scan Emmy + +Vérifiez enfin que les fichiers sont bien accessibles dans l'interface Web. +Ne pas oublier enfin de partager le dossier. + + +Sauvegarde de secours +""""""""""""""""""""" + +Si les données doivent être supprimées, il peut être utile de réaliser une sauvegarde à conserver +quelques mois. + +.. danger:: + + Cette sauvegarde ne doit être faite qu'à des fins utiles et supprimée dès que plus nécessaire. + +Sauvegardez alors le dossier ``/srv/TFJM/data/inscription/media`` et exportez la base de données : + +.. code:: bash + + sudo cp -r data/inscription/media data/inscription/media-2024 + sudo docker compose exec -u postgres postgres pg_dump inscription | sudo tee inscription_bkp_2024.sql + + +Réinitialisation effective +"""""""""""""""""""""""""" + +Il est désormais possible de réinitialiser la base de données. Rendez-vous dans le conteneur de +la plateforme, et exécutez : + +.. code:: bash + + rm -r media/* + ./manage.py reset_db + +Créez enfin un nouveau compte administrateur⋅rice : + +.. code:: bash + + ./manage.py createsuperuser + + +Nouveaux paramètres pour la nouvelle année +------------------------------------------ + +Certains paramètres doivent être modifiés pour prendre en compte la nouvelle année. + +Dates d'inscription +""""""""""""""""""" + +Les inscriptions sont permises uniquement entre l'ouverture et la fermeture, afin d'éviter +d'avoir des personnes s'inscrivant en dehors du TFJM². + +Pour cela, dans votre projet local, rendez-vous dans ``tfjm/settings.py`` et cherchez +le paramètre ``REGISTRATION_DATES`` (pour le TFJM²). Modifiez alors les sous-paramètres +``open`` et ``close`` pour définir les dates pendant lesquelles les inscriptions des +participant⋅es sont permises pour cette nouvelle année. Elles doivent être au format ISO. + +Exemple pour l'année 2025 où les inscriptions ouvrent au 8 janvier midi pour fermer +le 2 mars à 22h : + +.. code:: python + + REGISTRATION_DATES = dict( + open=datetime.fromisoformat("2025-01-08T12:00:00+0100"), + close=datetime.fromisoformat("2025-03-02T22:00:00+0100"), + ) + +Il faudra ensuite commiter la modification et redémarrer le serveur pour que la modification +prenne effet. + + +Noms des problèmes +"""""""""""""""""" + +Toujours dans la configuration dans ``tfjm/settings.py``, la liste des problèmes doit être +modifiée pour que leurs noms s'affichent correctement lors du tirage au sort. + +Cherchez le paramètre ``PROBLEMS`` et mettez alors à jour la liste, dans l'ordre, des noms +des problèmes. + +À nouveau, il est nécessaire de commiter la modification et redémarrer le serveur. + + +Paramètres des tournois +""""""""""""""""""""""" + +Il faut enfin paramétrer les différentes dates des tournois. + +Pour cela, connectez-vous sur la plateforme (avec un compte administrateur⋅rice), et dans l'onglet +« Tournois », vous pouvez créer les différents tournois avec les différentes dates pour chaque tournoi. +Plus d'information sur les différents paramètres dans la `section concernée +<../orga.html#creer-un-tournoi>`_ + + +À la fin du tournoi +------------------- + +Lorsque le tournoi est terminé, il faut récupérer les informations à stocker de façon pérenne, +notamment les solutions des équipes, les résultats ainsi que les autorisation de droit à l'image +comme indiqué précédemment. + +Conservation des autorisations de droit à l'image +""""""""""""""""""""""""""""""""""""""""""""""""" + +Se référer à la section plus haut. + + +Conservation des solutions des équipes +"""""""""""""""""""""""""""""""""""""" + +Le processus est très similaire à la conservation des autorisations de droit à l'image. +Il faut d'abord, dans le conteneur, lancer le script dédié pour récupérer les solutions +dans ``/code/output/solutions`` : + +.. code:: bash + + ./manage.py export_solutions + +On sort du conteneur et on récupère les solutions pour les déplacer dans Owncloud : + +.. code:: bash + + sudo docker cp tfjm_plateforme_1:/code/output/solutions . + sudo mv solutions/* "data/owncloud/files/Emmy/Solutions écrites 2024/" + sudo chown -R www-data:root "data/owncloud/files/Emmy/Solutions écrites 2024" + sudo rmdir solutions + +Il faut enfin réactualiser Owncloud. Exécuter en tant que www-data : + +.. code:: bash + + sudo docker compose exec -u www-data cloud php occ files:scan Emmy + +Vérifiez enfin que les fichiers sont bien accessibles dans l'interface Web. +Ne pas oublier enfin de partager le dossier. + + +Génération de la page de résultats Wordpress +"""""""""""""""""""""""""""""""""""""""""""" + +Pour finir, il est possible de récupérer les notes pour chaque tournoi afin de générer +la page Wordpress dans la section *Éditions précédentes*. + +Il suffit de lancer le script ``./manage.py export_results``, qui donne le texte brut pour +Wordpress à ajouter sur la page de l'édition qui vient de se terminer dans l'onglet +*Éditions précédentes*. + +Pensez à bien inclure sur cette page le lien vers les problèmes de l'année, ainsi que le +lien vers le dossier partagé dans le Owncloud concernant les solutions des équipes. + +Assurez-vous de mettre à jour la page *Éditions précédentes* afin d'inclure le lien vers +la page nouvellement créée. diff --git a/docs/index.rst b/docs/index.rst index 85e63c1..59c01da 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -21,3 +21,4 @@ administrateur⋅rice. dev/index dev/install + dev/transition diff --git a/participation/management/commands/export_solutions.py b/participation/management/commands/export_solutions.py index ca3c7ca..91a1664 100644 --- a/participation/management/commands/export_solutions.py +++ b/participation/management/commands/export_solutions.py @@ -5,7 +5,6 @@ from pathlib import Path from django.conf import settings from django.core.management import BaseCommand -from django.utils.translation import activate from participation.models import Solution, Tournament