mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
chore: Initial Commit
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]
This commit is contained in:
45
Back-End/GestionInscriptions/automate.py
Normal file
45
Back-End/GestionInscriptions/automate.py
Normal file
@ -0,0 +1,45 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user