workflows: redirect to fields after wf form submit (#50660)
This commit is contained in:
parent
12d70ce6c5
commit
dbf5c67c57
|
@ -24,6 +24,7 @@ from wcs.workflows import (
|
|||
CommentableWorkflowStatusItem,
|
||||
ChoiceWorkflowStatusItem,
|
||||
JumpOnSubmitWorkflowStatusItem,
|
||||
WorkflowVariablesFieldsFormDef,
|
||||
)
|
||||
from wcs.wf.create_carddata import CreateCarddataWorkflowStatusItem
|
||||
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
|
||||
|
@ -31,6 +32,7 @@ from wcs.wf.dispatch import DispatchWorkflowStatusItem
|
|||
from wcs.wf.edit_carddata import EditCarddataWorkflowStatusItem
|
||||
from wcs.wf.export_to_model import ExportToModel
|
||||
from wcs.wf.external_workflow import ExternalWorkflowGlobalAction
|
||||
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
||||
from wcs.wf.jump import JumpWorkflowStatusItem
|
||||
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
|
||||
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
|
||||
|
@ -933,12 +935,11 @@ def test_workflows_edit_display_form_action(pub):
|
|||
resp = resp.click('baz')
|
||||
|
||||
resp.forms[0]['action-interaction'] = 'Form'
|
||||
resp = resp.forms[0].submit()
|
||||
resp = resp.follow()
|
||||
|
||||
resp = resp.forms[0].submit().follow()
|
||||
resp = resp.click(re.compile('^Form$'))
|
||||
resp = resp.click('Edit Fields')
|
||||
|
||||
resp.form['varname'] = 'myform'
|
||||
resp = resp.forms[0].submit('submit').follow()
|
||||
# fields page
|
||||
resp.form['label'] = 'foobar'
|
||||
resp.form['type'] = 'string'
|
||||
resp = resp.form.submit()
|
||||
|
@ -2221,10 +2222,37 @@ def test_workflows_wscall_status_error(pub):
|
|||
assert error.occurences_count == 5
|
||||
|
||||
|
||||
def test_workflows_inspect_view(pub):
|
||||
from wcs.workflows import WorkflowVariablesFieldsFormDef
|
||||
from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
||||
def test_workflows_form_action_config(pub):
|
||||
create_superuser(pub)
|
||||
|
||||
Workflow.wipe()
|
||||
wf = Workflow(name='foo')
|
||||
st = wf.add_status('New')
|
||||
form = FormWorkflowStatusItem()
|
||||
form.parent = st
|
||||
st.items.append(form)
|
||||
wf.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/workflows/%s/status/%s/items/1/' % (wf.id, st.id))
|
||||
resp.form['by$element0'] = '_submitter'
|
||||
resp.form['varname'] = 'myform'
|
||||
resp.form['condition$type'] = 'django'
|
||||
resp.form['condition$value_django'] = '42'
|
||||
resp = resp.form.submit('submit')
|
||||
assert resp.location == 'http://example.net/backoffice/workflows/%s/status/%s/items/1/fields/' % (
|
||||
wf.id,
|
||||
st.id,
|
||||
)
|
||||
|
||||
wf = Workflow.get(wf.id)
|
||||
form = wf.possible_status[0].items[0]
|
||||
assert form.by == ['_submitter']
|
||||
assert form.varname == 'myform'
|
||||
assert form.condition == {'type': 'django', 'value': '42'}
|
||||
|
||||
|
||||
def test_workflows_inspect_view(pub):
|
||||
create_superuser(pub)
|
||||
role = create_role()
|
||||
|
||||
|
|
|
@ -341,7 +341,10 @@ class WorkflowItemPage(Directory):
|
|||
self.item.fill_admin_form(form)
|
||||
|
||||
if not self.workflow.is_readonly():
|
||||
form.add_submit('submit', _('Submit'))
|
||||
submit_label = _('Submit')
|
||||
if hasattr(self.item, 'submit_button_label'):
|
||||
submit_label = _(self.item.submit_button_label)
|
||||
form.add_submit('submit', submit_label)
|
||||
form.add_submit('cancel', _('Cancel'))
|
||||
|
||||
if form.get_widget('cancel').parse():
|
||||
|
@ -357,6 +360,8 @@ class WorkflowItemPage(Directory):
|
|||
'status': self.parent.name,
|
||||
}
|
||||
)
|
||||
if hasattr(self.item, 'redirect_after_submit_url'):
|
||||
return redirect(self.item.redirect_after_submit_url)
|
||||
return redirect('..')
|
||||
|
||||
self.html_top('%s - %s' % (_('Workflow'), self.workflow.name))
|
||||
|
|
|
@ -90,6 +90,8 @@ class FormWorkflowStatusItem(WorkflowStatusItem):
|
|||
ok_in_global_action = False
|
||||
endpoint = False
|
||||
waitpoint = True
|
||||
redirect_after_submit_url = 'fields/'
|
||||
submit_button_label = N_('Submit and go to fields edition')
|
||||
|
||||
by = []
|
||||
formdef = None
|
||||
|
@ -128,8 +130,6 @@ class FormWorkflowStatusItem(WorkflowStatusItem):
|
|||
hint=_('This is used as prefix for form fields variable names.'),
|
||||
)
|
||||
|
||||
form.widgets.append(HtmlWidget(htmltext('<p><a href="fields/">%s</a></p>') % _('Edit Fields')))
|
||||
|
||||
def get_parameters(self):
|
||||
return ('by', 'varname', 'condition')
|
||||
|
||||
|
|
Loading…
Reference in New Issue