0001-workflows-add-required-attribute-on-comment-action-3.patch
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 |
- |