Projet

Général

Profil

0001-workflows-add-required-attribute-on-comment-action-3.patch

Thomas Noël, 24 janvier 2019 16:48

Télécharger (5,4 ko)

Voir les différences:

Subject: [PATCH] workflows: add required attribute on comment action (#30023)

 tests/test_backoffice_pages.py | 49 ++++++++++++++++++++++++++++++++++
 tests/test_workflow_import.py  | 13 +++++++++
 wcs/workflows.py               |  9 +++++--
 3 files changed, 69 insertions(+), 2 deletions(-)
tests/test_backoffice_pages.py
4390 4390
    workflow.store()
4391 4391
    resp = app.get('/backoffice/workflows/%s/inspect' % workflow.id)
4392 4392
    assert '23 hours' in resp.body
4393

  
4394
def test_workflow_comment_required(pub):
4395
    user = create_user(pub)
4396
    create_environment(pub)
4397

  
4398
    wf = Workflow(name='blah')
4399
    st1 = wf.add_status('Comment')
4400
    st1.id = 'comment'
4401
    commentable = CommentableWorkflowStatusItem()
4402
    commentable.id = '_commentable'
4403
    commentable.by = ['_submitter', '_receiver']
4404
    st1.items.append(commentable)
4405
    commentable.parent = st1
4406
    wf.store()
4407

  
4408
    formdef = FormDef.get_by_urlname('form-title')
4409
    formdef.data_class().wipe()
4410
    formdef.workflow = wf
4411
    formdef.store()
4412

  
4413
    formdata = formdef.data_class()()
4414
    formdata.data = {}
4415
    formdata.just_created()
4416
    formdata.store()
4417

  
4418
    app = login(get_app(pub))
4419
    resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
4420
    assert 'widget-required' not in resp.body
4421
    resp.form['comment'] = 'HELLO WORLD 1'
4422
    resp = resp.form.submit('button_commentable')
4423
    resp = resp.follow()
4424
    assert 'HELLO WORLD 1' in resp.body
4425
    assert 'widget-required' not in resp.body
4426
    resp.form['comment'] = None
4427
    resp = resp.form.submit('button_commentable')
4428
    resp = resp.follow()
4429

  
4430
    commentable.required = True
4431
    wf.store()
4432
    resp = app.get('/backoffice/management/form-title/%s/' % formdata.id)
4433
    assert 'widget-required' in resp.body
4434
    resp.form['comment'] = '  '  # spaces == empty
4435
    resp = resp.form.submit('button_commentable')
4436
    assert 'widget-with-error' in resp.body
4437
    resp.form['comment'] = 'HELLO WORLD 2'
4438
    resp = resp.form.submit('button_commentable')
4439
    resp = resp.follow()
4440
    assert 'widget-with-error' not in resp.body
4441
    assert 'HELLO WORLD 2' in resp.body
tests/test_workflow_import.py
355 355

  
356 356
    wf2 = assert_import_export_works(wf)
357 357
    assert wf2.possible_status[0].items[0].button_label is None
358
    assert wf2.possible_status[0].items[0].required is False
359

  
360
    commentable.required = True
361
    wf2 = assert_import_export_works(wf)
362
    assert wf2.possible_status[0].items[0].required is True
363

  
364
    # import legacy comment without required attribute
365
    xml_export = ET.tostring(export_to_indented_xml(wf))
366
    assert '<required>True</required>' in xml_export
367
    xml_export = xml_export.replace('<required>True</required>', '')
368
    assert '<required>True</required>' not in xml_export
369
    wf2 = Workflow.import_from_xml_tree(ET.parse(StringIO.StringIO(xml_export)))
370
    assert wf2.possible_status[0].items[0].required is False
358 371

  
359 372

  
360 373
def test_variables_formdef(pub):
wcs/workflows.py
1943 1943
    waitpoint = True
1944 1944
    ok_in_global_action = False
1945 1945

  
1946
    required = False
1946 1947
    varname = None
1947 1948
    label = None
1948 1949
    button_label = 0 # hack to handle legacy commentable items
......
1962 1963
                title = _('Comment')
1963 1964
            else:
1964 1965
                title = self.label
1965
            form.add(TextWidget, 'comment', title=title, required=False,
1966
            form.add(TextWidget, 'comment', title=title, required=self.required,
1966 1967
                    cols=40, rows=10, hint=self.hint)
1967 1968
            form.get_widget('comment').attrs['class'] = 'comment'
1968 1969
            if self.button_label == 0:
......
1992 1993

  
1993 1994
    def get_parameters(self):
1994 1995
        return ('label', 'button_label', 'hint', 'by', 'varname',
1995
                'backoffice_info_text', 'condition')
1996
                'backoffice_info_text', 'required', 'condition')
1996 1997

  
1997 1998
    def add_parameters_widgets(self, form, parameters, prefix='', formdef=None):
1998 1999
        super(CommentableWorkflowStatusItem, self).add_parameters_widgets(
......
2020 2021
            form.add(VarnameWidget, '%svarname' % prefix,
2021 2022
                     title=_('Identifier'), value=self.varname,
2022 2023
                     hint=_('This will make the comment available in a variable named comment_ + identifier.'))
2024
        if 'required' in parameters:
2025
            form.add(CheckboxWidget, '%srequired' % prefix,
2026
                     title=_('Required'), value=self.required)
2027

  
2023 2028
        if 'backoffice_info_text' in parameters:
2024 2029
            form.add(WysiwygTextWidget, '%sbackoffice_info_text' % prefix,
2025 2030
                     title=_('Information Text for Backoffice'),
2026
-