Projet

Général

Profil

0001-workflow-fix-auto-jump-to-unknown-status-43242.patch

Lauréline Guérin, 22 juin 2020 14:41

Télécharger (2,76 ko)

Voir les différences:

Subject: [PATCH] workflow: fix auto jump to unknown status (#43242)

 tests/test_backoffice_pages.py | 21 ++++++++++++++++++++-
 wcs/formdata.py                |  7 +++++--
 2 files changed, 25 insertions(+), 3 deletions(-)
tests/test_backoffice_pages.py
5266 5266

  
5267 5267

  
5268 5268
def test_workflow_jump_previous_auto(pub):
5269
    user = create_user(pub)
5269
    create_user(pub)
5270 5270
    create_environment(pub)
5271 5271

  
5272 5272
    wf = Workflow(name='blah')
......
5318 5318
    assert formdata.status == 'wf-south'
5319 5319
    assert formdata.workflow_data['_markers_stack'] == [{'status_id': 'north'}]
5320 5320

  
5321
    # no marker (workflow inconsistency)
5322
    formdata.workflow_data['_markers_stack'] = []
5323
    formdata.store()
5324
    resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
5325
    resp = resp.form.submit('button_back')
5326
    resp = resp.follow()
5327
    formdata = formdef.data_class().get(formdata.id)
5328
    assert formdata.status == 'wf-south'
5329
    assert not formdata.workflow_data['_markers_stack']
5330

  
5331
    # unknown marker (workflow inconsistency)
5332
    formdata.workflow_data['_markers_stack'] = [{'status_id': 'unknown_status'}]
5333
    formdata.store()
5334
    resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
5335
    resp = resp.form.submit('button_back')
5336
    resp = resp.follow()
5337
    formdata = formdef.data_class().get(formdata.id)
5338
    assert formdata.status == 'wf-south'
5339

  
5321 5340

  
5322 5341
def test_backoffice_fields(pub):
5323 5342
    user = create_user(pub)
wcs/formdata.py
578 578
        wf_status.evaluate_live_form(form, self, user)
579 579

  
580 580
    def pop_previous_marked_status(self):
581
        if not self.workflow_data or not '_markers_stack' in self.workflow_data:
581
        if not self.workflow_data or '_markers_stack' not in self.workflow_data:
582 582
            return None
583 583
        try:
584 584
            marker_data = self.workflow_data['_markers_stack'].pop()
585 585
            status_id = marker_data['status_id']
586 586
        except IndexError:
587 587
            return None
588
        return self.formdef.workflow.get_status(status_id)
588
        try:
589
            return self.formdef.workflow.get_status(status_id)
590
        except KeyError:
591
            return None
589 592

  
590 593
    def jump_status(self, status_id):
591 594
        if status_id == '_previous':
592
-