# 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