mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-11-04 08:22:10 +01:00 
			
		
		
		
	Add documentation for year transitioning
Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
		
							
								
								
									
										194
									
								
								docs/dev/transition.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								docs/dev/transition.rst
									
									
									
									
									
										Normal file
									
								
							@@ -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.
 | 
				
			||||||
@@ -21,3 +21,4 @@ administrateur⋅rice.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   dev/index
 | 
					   dev/index
 | 
				
			||||||
   dev/install
 | 
					   dev/install
 | 
				
			||||||
 | 
					   dev/transition
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ from pathlib import Path
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
from django.core.management import BaseCommand
 | 
					from django.core.management import BaseCommand
 | 
				
			||||||
from django.utils.translation import activate
 | 
					 | 
				
			||||||
from participation.models import Solution, Tournament
 | 
					from participation.models import Solution, Tournament
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user