Projet

Général

Profil

0001-workflows-reevaluate-form-according-to-possible-new-.patch

Frédéric Péters, 06 juillet 2019 16:47

Télécharger (3,2 ko)

Voir les différences:

Subject: [PATCH] workflows: reevaluate form according to possible new content
 (#34564)

 tests/test_form_pages.py | 44 ++++++++++++++++++++++++++++++++++++++++
 wcs/forms/common.py      |  3 +++
 2 files changed, 47 insertions(+)
tests/test_form_pages.py
6581 6581
    resp = resp.form.submit('submit').follow()
6582 6582

  
6583 6583
    assert formdef.data_class().get(formdata.id).workflow_data == {'blah_var_str': 'xxx2', 'blah_var_str2': None}
6584

  
6585
def test_frontoffice_workflow_form_with_dynamic_comment(pub):
6586
    user = create_user(pub)
6587
    wf = Workflow.get_default_workflow()
6588
    wf.id = '2'
6589
    wf.store()
6590
    wf = Workflow.get(wf.id)
6591
    status = wf.get_status('new')
6592
    status.items = []
6593
    display_form = FormWorkflowStatusItem()
6594
    display_form.id = '_display_form'
6595
    display_form.by = ['_submitter']
6596
    display_form.varname = 'blah'
6597
    display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
6598
    display_form.formdef.fields = [
6599
            fields.StringField(id='1', label='Test', varname='str', type='string', required=True),
6600
            fields.CommentField(id='2', label='value is {{blah_var_str}}', type='comment'),
6601
    ]
6602
    status.items.append(display_form)
6603
    display_form.parent = status
6604

  
6605
    wf.store()
6606
    formdef = create_formdef()
6607
    formdef.workflow_id = wf.id
6608
    formdef.fields = [fields.StringField(id='0', label='string', varname='plop')]
6609
    formdef.store()
6610

  
6611
    formdef.data_class().wipe()
6612

  
6613
    formdata = formdef.data_class()()
6614
    formdata.user_id = user.id
6615
    formdata.status = 'wf-new'
6616
    formdata.data = {'0': 'plop'}
6617
    formdata.store()
6618

  
6619
    app = login(get_app(pub), username='foo', password='foo')
6620
    resp = app.get(formdata.get_url(backoffice=False))
6621
    assert 'f1' in resp.form.fields
6622

  
6623
    live_url = resp.html.find('form').attrs['data-live-url']
6624
    resp.form['f1'] = 'test'
6625
    live_resp = app.post(live_url, params=resp.form.submit_fields())
6626
    assert live_resp.json['result']['2']['visible']
6627
    assert live_resp.json['result']['2']['content'] == '<p>value is test</p>'
wcs/forms/common.py
675 675
        user = get_request().user
676 676
        form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
677 677
        self.filled.evaluate_live_workflow_form(user, form)
678
        get_publisher().substitutions.unfeed(lambda x: x is self.filled)
678 679
        get_publisher().substitutions.feed(self.filled)
680
        # reevaluate workflow form according to possible new content
681
        form = self.filled.get_workflow_form(user, displayed_fields=displayed_fields)
679 682
        return self.live_process_fields(form, self.filled, displayed_fields)
680 683

  
681 684
    def _q_lookup(self, component):
682
-