workflows: skip non-widget fields in set backoffice field action (#11443)
This commit is contained in:
parent
e4a0cf641c
commit
1373080b38
|
@ -1674,8 +1674,6 @@ def test_workflows_backoffice_fields(pub):
|
|||
resp = resp.forms[0].submit()
|
||||
resp = resp.follow()
|
||||
|
||||
resp = resp.click('Set Backoffice Fields')
|
||||
|
||||
# add a second field
|
||||
resp = app.get('/backoffice/workflows/1/')
|
||||
resp = resp.click(href='backoffice-fields/', index=0)
|
||||
|
@ -1691,6 +1689,31 @@ def test_workflows_backoffice_fields(pub):
|
|||
assert workflow.backoffice_fields_formdef.fields[0].id == 'bo1'
|
||||
assert workflow.backoffice_fields_formdef.fields[1].id == 'bo2'
|
||||
|
||||
# add a title field
|
||||
resp = app.get('/backoffice/workflows/1/backoffice-fields/fields/')
|
||||
resp.forms[0]['label'] = 'foobar3'
|
||||
resp.forms[0]['type'] = 'Title'
|
||||
resp = resp.form.submit()
|
||||
workflow = Workflow.get(workflow.id)
|
||||
assert len(workflow.backoffice_fields_formdef.fields) == 3
|
||||
assert workflow.backoffice_fields_formdef.fields[2].id == 'bo3'
|
||||
|
||||
# check backoffice fields are available in set backoffice fields action
|
||||
resp = app.get('/backoffice/workflows/1/')
|
||||
resp = resp.click('baz') # status
|
||||
resp = resp.click('Set Backoffice Fields')
|
||||
options = [x[2] for x in resp.form['fields$element0$field_id'].options]
|
||||
assert '' in options
|
||||
assert 'foobar' in options
|
||||
assert 'foobar2' in options
|
||||
assert 'foobar3' not in options
|
||||
|
||||
resp.form['fields$element0$field_id'] = 'bo1'
|
||||
resp.form['fields$element0$value'] = 'Hello'
|
||||
resp = resp.form.submit('submit')
|
||||
workflow = Workflow.get(workflow.id)
|
||||
assert workflow.possible_status[0].items[0].fields == [{'field_id': 'bo1', 'value': 'Hello'}]
|
||||
|
||||
def test_workflows_functions(pub):
|
||||
create_superuser(pub)
|
||||
create_role()
|
||||
|
|
|
@ -21,6 +21,7 @@ from quixote import get_publisher
|
|||
|
||||
from qommon import get_logger
|
||||
from qommon.form import WidgetListAsTable, CompositeWidget, SingleSelectWidget, ComputedExpressionWidget
|
||||
from wcs.fields import WidgetField
|
||||
from wcs.workflows import XmlSerialisable, WorkflowStatusItem, register_item_class
|
||||
from wcs.wf.profile import FieldNode
|
||||
|
||||
|
@ -32,7 +33,10 @@ class SetBackofficeFieldRowWidget(CompositeWidget):
|
|||
value = {}
|
||||
|
||||
fields = [('', '', '')]
|
||||
fields.extend([(x.id, x.label, x.id) for x in workflow.get_backoffice_fields()])
|
||||
for field in workflow.get_backoffice_fields():
|
||||
if not issubclass(field.__class__, WidgetField):
|
||||
continue
|
||||
fields.append((field.id, field.label, field.id))
|
||||
self.add(SingleSelectWidget, name='field_id', title=_('Field'),
|
||||
value=value.get('field_id'),
|
||||
options=fields, **kwargs)
|
||||
|
|
Loading…
Reference in New Issue