Development #77106
Workflow: plus d'une action création d'une demande, dont le wf a aussi une action création d'une demande
Début:
28 avril 2023
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Non
Planning:
Non
Description
Formdef formdef1 avec un workflow wf1 avec:
- action création d'une demande, formdef2
- dans le même statut, une autre action création d'une demande, formdef2
Formdef formdef2 avec un workflow wf2 avec:
- action création d'une demande, formdef3
Création d'un formdata formdef1, échec, "Détection d’une création récursive de fiches"
Je pense que je reproduis avec le test suivant:
def test_recursive_create_formdata_with_subformdata(pub): FormDef.wipe() pub.loggederror_class.wipe() # simple sub formdef, which workflow does not create other related formdatas. subformdef = FormDef() subformdef.name = 'test subform' subformdef.fields = [ StringField(id='0', label='string', varname='foo_string'), ] subformdef.store() formdef = FormDef() formdef.name = 'test form' formdef.fields = [ StringField(id='0', label='string', varname='foo_string'), ] formdef.store() wf = Workflow(name='create-formdata') wf.possible_status = Workflow.get_default_workflow().possible_status[:] create = wf.possible_status[1].add_action('create_formdata', id='_create', prepend=True) create.label = 'create a sub form' create.varname = 'resubmitted' create.mappings = [Mapping(field_id='0', expression='test')] create.formdef_slug = subformdef.url_name create2 = wf.possible_status[1].add_action('create_formdata', id='_create', prepend=True) create2.label = 'create a sub form 2, the same' create2.varname = 'resubmitted' create2.mappings = [Mapping(field_id='0', expression='test')] create2.formdef_slug = subformdef.url_name wf.store() formdef.workflow_id = wf.id formdef.store() formdata = formdef.data_class()() formdata.data = {} formdata.just_created() formdata.store() formdata.perform_workflow() assert formdef.data_class().count() == 1 assert subformdef.data_class().count() == 2 assert pub.loggederror_class.count() == 0 formdef.data_class().wipe() subformdef.data_class().wipe() # now add formdata creation in subformdef workflow subsubformdef = FormDef() subsubformdef.name = 'test subsubform' subsubformdef.fields = [ StringField(id='0', label='string', varname='foo_string'), ] subsubformdef.store() subwf = Workflow(name='create-formdata-again') subwf.possible_status = Workflow.get_default_workflow().possible_status[:] create = subwf.possible_status[1].add_action('create_formdata', id='_create', prepend=True) create.label = 'create a subsub form' create.varname = 'resubmitted' create.mappings = [Mapping(field_id='0', expression='test')] create.formdef_slug = subsubformdef.url_name subwf.store() subformdef.workflow_id = subwf.id subformdef.store() formdata = formdef.data_class()() formdata.data = {} formdata.just_created() formdata.store() formdata.perform_workflow() assert formdef.data_class().count() == 1 assert subformdef.data_class().count() == 2 # fail assert subsubformdef.data_class().count() == 2 # fail assert pub.loggederror_class.count() == 0 # fail, Detected recursive creation of forms
Demandes liées
Révisions associées
workflows: redo recursion detection using workflow execution stacks (#77106)
Historique
Mis à jour par Lauréline Guérin il y a environ un an
- Lié à Bug #74574: CardDef branché sur un workflow qui exécute une action de création de fiche du même model (RecursionError: maximum recursion depth exceeded while calling a Python object) ajouté
Mis à jour par Robot Gitea il y a environ un an
- Tracker changé de Bug à Development
- Statut changé de Nouveau à En cours
- Assigné à mis à Frédéric Péters
Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/271
- Titre : WIP: workflows: redo recursion detection using workflow execution stacks (#77106)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/271/files
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Solution proposée à Solution validée
Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a environ un an
- Statut changé de Solution validée à Résolu (à déployer)
Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/271
- Titre : workflows: redo recursion detection using workflow execution stacks (#77106)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/271/files
Mis à jour par Transition automatique il y a environ un an
- Statut changé de Résolu (à déployer) à Solution déployée
workflows: redo recursion detection using workflow execution stacks (#77106)