Bug #43242
jump vers un saut précédent : crash si le statut n'existe plus
Début:
24 mai 2020
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Si un statut d'un workflow a été supprimé alors que des demandes ont ce statut enregistré comme "marqueur précédent", on a un KeyError dans pop_previous_marked_status :
def pop_previous_marked_status(self): if not self.workflow_data or not '_markers_stack' in self.workflow_data: return None try: marker_data = self.workflow_data['_markers_stack'].pop() status_id = marker_data['status_id'] except IndexError: return None return self.formdef.workflow.get_status(status_id) <---- KeyError, le statut n'existe plus
Un petit test qui montre le soucis :
diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index d4921da6..a8eb586a 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -5247,6 +5247,25 @@ def test_workflow_jump_previous_auto(pub): assert formdata.status == 'wf-south' assert formdata.workflow_data['_markers_stack'] == [{'status_id': 'north'}] + # no marker (workflow inconsistency) + formdata.workflow_data['_markers_stack'] = [] + formdata.store() + resp = app.get('/backoffice/management/form-title/%s/' % formdata.id) + resp = resp.form.submit('button_back') + resp = resp.follow() + formdata = formdef.data_class().get(formdata.id) + assert formdata.status == 'wf-south' + assert not formdata.workflow_data['_markers_stack'] + + # unknown marker (workflow inconsistency) + formdata.workflow_data['_markers_stack'] = [{'status_id': 'unknown_status'}] + formdata.store() + resp = app.get('/backoffice/management/form-title/%s/' % formdata.id) + resp = resp.form.submit('button_back') + resp = resp.follow() + formdata = formdef.data_class().get(formdata.id) + assert formdata.status == 'wf-south' +
Le premier test sans aucun marqueur passe, mais pas le second où le statut pointé par le marqueur n'existe pas.
(À noter qu'à ma connaissance ça n'est jamais arrivé en vrai, j'ai juste repéré le truc suite à la relecture de #42854)
Fichiers
Révisions associées
Historique
Mis à jour par Lauréline Guérin il y a presque 4 ans
- Fichier 0001-workflow-fix-auto-jump-to-unknown-status-43242.patch 0001-workflow-fix-auto-jump-to-unknown-status-43242.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Lauréline Guérin il y a presque 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit a5dde9f9c9c596b9f54f925beb3a90343fe5bf89 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Mon Jun 22 14:38:44 2020 +0200 workflow: fix auto jump to unknown status (#43242)
Mis à jour par Frédéric Péters il y a presque 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
workflow: fix auto jump to unknown status (#43242)