Projet

Général

Profil

0001-forms-use-proper-pages-calculation-to-know-if-page-n.patch

Frédéric Péters, 13 juillet 2018 10:43

Télécharger (3,48 ko)

Voir les différences:

Subject: [PATCH] forms: use proper pages calculation to know if page number is
 out (#25263)

 tests/test_backoffice_pages.py | 38 ++++++++++++++++++++++++++++++++++
 wcs/forms/root.py              |  6 +-----
 2 files changed, 39 insertions(+), 5 deletions(-)
tests/test_backoffice_pages.py
2131 2131
    assert formdef.data_class().count() == 1
2132 2132
    assert formdef.data_class().select()[0].user_id is None
2133 2133

  
2134
def test_backoffice_submission_multiple_page_restore_on_validation(pub):
2135
    user = create_user(pub)
2136
    create_environment(pub)
2137
    other_user = pub.user_class(name='other user')
2138
    other_user.email = 'other@example.net'
2139
    other_user.store()
2140

  
2141
    formdef = FormDef.get_by_urlname('form-title')
2142
    formdef.fields = [
2143
        fields.PageField(id='0', label='1st page', type='page'),
2144
        fields.StringField(id='1', label='1st field', type='string', required=False),
2145
        fields.PageField(id='2', label='2nd page', type='page',
2146
            condition={'type': 'python', 'value': 'False'}),
2147
        fields.PageField(id='3', label='3rd page', type='page'),
2148
        fields.StringField(id='5', label='field on 3rd page'),
2149
    ]
2150
    formdef.backoffice_submission_roles = user.roles[:]
2151
    formdef.enable_tracking_codes = True
2152
    formdef.store()
2153

  
2154
    formdef.data_class().wipe()
2155

  
2156
    app = login(get_app(pub))
2157
    resp = app.get('/backoffice/submission/form-title/')
2158
    resp.form['f1'] = 'foo'
2159
    resp = resp.form.submit('submit')
2160
    resp.form['f5'] = 'bar'
2161
    resp = resp.form.submit('submit')
2162
    assert 'Check values then click submit.' in resp.body
2163

  
2164
    assert formdef.data_class().count() == 1
2165
    formdata = formdef.data_class().select()[0]
2166
    # restore draft
2167
    resp = app.get('/backoffice/submission/')
2168
    resp = resp.click(href='form-title/%s' % formdata.id)
2169
    resp = resp.follow()
2170
    assert 'Check values then click submit.' in resp.body
2171

  
2134 2172
def test_backoffice_submission_substitution_vars(pub):
2135 2173
    user = create_user(pub)
2136 2174
    create_environment(pub)
wcs/forms/root.py
189 189
        self.code = TrackingCodesDirectory(self.formdef)
190 190
        self.action_url = '.'
191 191
        self.edit_mode = False
192

  
193
        self.page_number = len([
194
                x for x in self.formdef.fields[1:] if x.type == 'page']) + 1
195

  
196 192
        self.user = get_request().user
197 193
        get_response().breadcrumb.append( (component + '/', self.formdef.name) )
198 194

  
......
629 625
                    if 'page_no' in data and int(data['page_no']) != 0:
630 626
                        page_no = int(data['page_no'])
631 627
                        del data['page_no']
632
                        if page_no == -1 or page_no >= self.page_number:
628
                        if page_no == -1 or page_no >= len(self.pages):
633 629
                            req = get_request()
634 630
                            for k, v in data.items():
635 631
                                req.form['f%s' % k] = v
636
-