From 48efa8c52a75be9282a42579f56672cf3e3888aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 11 Jun 2017 10:04:15 +0200 Subject: [PATCH] workflows: make "display form" associated button label configurable (#16816) --- tests/test_backoffice_pages.py | 11 +++++++++++ tests/test_workflow_import.py | 4 ++++ wcs/wf/form.py | 15 +++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/test_backoffice_pages.py b/tests/test_backoffice_pages.py index 70869c7e..8fa4199f 100644 --- a/tests/test_backoffice_pages.py +++ b/tests/test_backoffice_pages.py @@ -3097,6 +3097,17 @@ def test_backoffice_workflow_display_form(pub): assert formdef.data_class().get(formdata.id).workflow_data == { 'blah_var_str': 'blah', 'blah_var_radio': 'c', 'blah_var_radio_raw': 'c'} + # test alternate button label + display_form.button_label = 'CLICK ME' + wf.store() + + for formdata in formdef.data_class().select(): + if formdata.status == 'wf-new': + break + app = login(get_app(pub)) + resp = app.get(formdata.get_url(backoffice=True)) + assert 'CLICK ME' in resp.body + def test_backoffice_criticality_in_formdef_listing(pub): if not pub.is_using_postgresql(): pytest.skip('this requires SQL') diff --git a/tests/test_workflow_import.py b/tests/test_workflow_import.py index e7e56901..5aa00086 100644 --- a/tests/test_workflow_import.py +++ b/tests/test_workflow_import.py @@ -216,6 +216,10 @@ def test_display_form_action(): # formdef.max_field_id is recalculated when importing a FormWorkflowStatusItem assert wf2.possible_status[0].items[0].formdef.max_field_id == len(display_form.formdef.fields) + display_form.button_label = 'Test' + display_form.backoffice_info_text = 'Lorem ipsum long description.' + wf2 = assert_import_export_works(wf) + def test_export_to_model_action(): wf = Workflow(name='status') diff --git a/wcs/wf/form.py b/wcs/wf/form.py index a3fa14f8..6ac0620c 100644 --- a/wcs/wf/form.py +++ b/wcs/wf/form.py @@ -78,6 +78,8 @@ class FormWorkflowStatusItem(WorkflowStatusItem): by = [] formdef = None varname = None + button_label = None + backoffice_info_text = None @classmethod def init(cls): @@ -93,6 +95,14 @@ class FormWorkflowStatusItem(WorkflowStatusItem): element_kwargs = {'render_br': False, 'options': [(None, '---', None)] + self.get_list_of_roles(include_logged_in_users=False)}) + if 'button_label' in parameters: + form.add(StringWidget, '%sbutton_label' % prefix, title=_('Button Label'), + value=self.button_label or _('Submit'), + required=True) + if 'backoffice_info_text' in parameters: + form.add(WysiwygTextWidget, '%sbackoffice_info_text' % prefix, + title=_('Information Text for Backoffice'), + value=self.backoffice_info_text) if 'varname' in parameters: form.add(VarnameWidget, '%svarname' % prefix, required=True, title=_('Variable Name'), value=self.varname) @@ -100,7 +110,7 @@ class FormWorkflowStatusItem(WorkflowStatusItem): form.widgets.append(HtmlWidget(htmltext('

%s

') % _('Edit Fields'))) def get_parameters(self): - return ('by', 'varname') + return ('by', 'button_label', 'backoffice_info_text', 'varname') def export_to_xml(self, charset, include_id=False): item = WorkflowStatusItem.export_to_xml(self, charset, include_id=include_id) @@ -143,7 +153,8 @@ class FormWorkflowStatusItem(WorkflowStatusItem): if not self.formdef: return self.formdef.add_fields_to_form(form) - form.add_submit('submit', _('Submit')) + form.add_submit('submit', self.button_label or _('Submit')) + form.get_widget('submit').backoffice_info_text = self.backoffice_info_text formdata.feed_session() -- 2.11.0