Projet

Général

Profil

0001-workflows-make-display-form-associated-button-label-.patch

Frédéric Péters, 11 juin 2017 10:08

Télécharger (4,09 ko)

Voir les différences:

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(-)
tests/test_backoffice_pages.py
3097 3097
    assert formdef.data_class().get(formdata.id).workflow_data == {
3098 3098
            'blah_var_str': 'blah', 'blah_var_radio': 'c', 'blah_var_radio_raw': 'c'}
3099 3099

  
3100
    # test alternate button label
3101
    display_form.button_label = 'CLICK ME'
3102
    wf.store()
3103

  
3104
    for formdata in formdef.data_class().select():
3105
        if formdata.status == 'wf-new':
3106
            break
3107
    app = login(get_app(pub))
3108
    resp = app.get(formdata.get_url(backoffice=True))
3109
    assert 'CLICK ME' in resp.body
3110

  
3100 3111
def test_backoffice_criticality_in_formdef_listing(pub):
3101 3112
    if not pub.is_using_postgresql():
3102 3113
        pytest.skip('this requires SQL')
tests/test_workflow_import.py
216 216
    # formdef.max_field_id is recalculated when importing a FormWorkflowStatusItem
217 217
    assert wf2.possible_status[0].items[0].formdef.max_field_id == len(display_form.formdef.fields)
218 218

  
219
    display_form.button_label = 'Test'
220
    display_form.backoffice_info_text = 'Lorem ipsum long description.'
221
    wf2 = assert_import_export_works(wf)
222

  
219 223

  
220 224
def test_export_to_model_action():
221 225
    wf = Workflow(name='status')
wcs/wf/form.py
78 78
    by = []
79 79
    formdef = None
80 80
    varname = None
81
    button_label = None
82
    backoffice_info_text = None
81 83

  
82 84
    @classmethod
83 85
    def init(cls):
......
93 95
                element_kwargs = {'render_br': False,
94 96
                                  'options': [(None, '---', None)] +
95 97
                                              self.get_list_of_roles(include_logged_in_users=False)})
98
        if 'button_label' in parameters:
99
            form.add(StringWidget, '%sbutton_label' % prefix, title=_('Button Label'),
100
                    value=self.button_label or _('Submit'),
101
                    required=True)
102
        if 'backoffice_info_text' in parameters:
103
            form.add(WysiwygTextWidget, '%sbackoffice_info_text' % prefix,
104
                     title=_('Information Text for Backoffice'),
105
                     value=self.backoffice_info_text)
96 106
        if 'varname' in parameters:
97 107
            form.add(VarnameWidget, '%svarname' % prefix, required=True,
98 108
                     title=_('Variable Name'), value=self.varname)
......
100 110
            form.widgets.append(HtmlWidget(htmltext('<p><a href="fields/">%s</a></p>') % _('Edit Fields')))
101 111

  
102 112
    def get_parameters(self):
103
        return ('by', 'varname')
113
        return ('by', 'button_label', 'backoffice_info_text', 'varname')
104 114

  
105 115
    def export_to_xml(self, charset, include_id=False):
106 116
        item = WorkflowStatusItem.export_to_xml(self, charset, include_id=include_id)
......
143 153
        if not self.formdef:
144 154
            return
145 155
        self.formdef.add_fields_to_form(form)
146
        form.add_submit('submit', _('Submit'))
156
        form.add_submit('submit', self.button_label or _('Submit'))
157
        form.get_widget('submit').backoffice_info_text = self.backoffice_info_text
147 158

  
148 159
        formdata.feed_session()
149 160

  
150
-