mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 15:33:22 +00:00
feat: Gestion des inscriptions [#1] feat(frontend): Création des vues pour le paramétrage de l'école [#2] feat: Gestion du login [#6] fix: Correction lors de la migration des modèle [#8] feat: Révision du menu principal [#9] feat: Ajout d'un footer [#10] feat: Création des dockers compose pour les environnements de développement et de production [#12] doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
# state_machine.py
|
|
import json
|
|
from GestionInscriptions.models import FicheInscription
|
|
from GestionInscriptions.signals import clear_cache
|
|
|
|
state_mapping = {
|
|
"ABSENT": FicheInscription.EtatDossierInscription.DI_ABSENT,
|
|
"CREE": FicheInscription.EtatDossierInscription.DI_CREE,
|
|
"ENVOYE": FicheInscription.EtatDossierInscription.DI_ENVOYE,
|
|
"EN_VALIDATION": FicheInscription.EtatDossierInscription.DI_EN_VALIDATION,
|
|
"A_RELANCER": FicheInscription.EtatDossierInscription.DI_A_RELANCER,
|
|
"VALIDE": FicheInscription.EtatDossierInscription.DI_VALIDE,
|
|
"ARCHIVE": FicheInscription.EtatDossierInscription.DI_ARCHIVE
|
|
}
|
|
|
|
def load_config(config_file):
|
|
with open(config_file, 'r') as file:
|
|
config = json.load(file)
|
|
return config
|
|
|
|
def getStateMachineObject(etat) :
|
|
return Automate_DI_Inscription(etat)
|
|
|
|
def getStateMachineObjectState(etat):
|
|
return Automate_DI_Inscription(etat).state
|
|
|
|
def updateStateMachine(di, transition) :
|
|
automateModel = load_config('GestionInscriptions/Configuration/automate.json')
|
|
state_machine = getStateMachineObject(di.etat)
|
|
print(f'etat DI : {state_machine.state}')
|
|
if state_machine.trigger(transition, automateModel):
|
|
di.etat = state_machine.state
|
|
di.save()
|
|
clear_cache()
|
|
|
|
class Automate_DI_Inscription:
|
|
def __init__(self, initial_state):
|
|
self.state = initial_state
|
|
|
|
def trigger(self, transition_name, config):
|
|
for transition in config["transitions"]:
|
|
if transition["name"] == transition_name and self.state == state_mapping[transition["from"]]:
|
|
self.state = state_mapping[transition["to"]]
|
|
return True
|
|
return False |