Projet

Général

Profil

0001-admin-warning-on-only_allow_one-field-56788.patch

Lauréline Guérin, 30 septembre 2021 09:55

Télécharger (3,3 ko)

Voir les différences:

Subject: [PATCH] admin: warning on only_allow_one field (#56788)

 tests/admin_pages/test_form.py | 31 ++++++++++++++++++++++++++++++-
 wcs/admin/forms.py             |  7 +++++++
 2 files changed, 37 insertions(+), 1 deletion(-)
tests/admin_pages/test_form.py
150 150

  
151 151
def test_forms_edit_limit_one_form(pub, formdef):
152 152
    create_superuser(pub)
153
    create_role(pub)
153
    role = create_role(pub)
154 154

  
155 155
    app = login(get_app(pub))
156 156
    resp = app.get('/backoffice/forms/1/')
157 157

  
158 158
    # Limit to one form
159
    assert formdef.roles is None
159 160
    assert_option_display(resp, 'Limit to one form', 'Disabled')
160 161
    resp = resp.click('Limit to one form')
162
    assert (
163
        'Warning: this option concerns logged in users only, however this form is accessible anonymously. Consider adding an sender role.'
164
        in resp
165
    )
161 166
    assert resp.forms[0]['only_allow_one'].checked is False
162 167
    resp.forms[0]['only_allow_one'].checked = True
163 168
    resp = resp.forms[0].submit()
......
166 171
    assert_option_display(resp, 'Limit to one form', 'Enabled')
167 172
    assert FormDef.get(1).only_allow_one is True
168 173

  
174
    formdef.roles = ['logged-users']
175
    formdef.store()
176
    resp = app.get('/backoffice/forms/1/options/only_allow_one')
177
    assert (
178
        'Warning: this option concerns logged in users only, however this form is accessible anonymously. Consider adding an sender role.'
179
        not in resp
180
    )
181

  
182
    formdef.roles = [str(role.id)]
183
    formdef.store()
184
    resp = app.get('/backoffice/forms/1/options/only_allow_one')
185
    assert (
186
        'Warning: this option concerns logged in users only, however this form is accessible anonymously. Consider adding an sender role.'
187
        not in resp
188
    )
189

  
190
    formdef.roles = []
191
    formdef.store()
192
    resp = app.get('/backoffice/forms/1/options/only_allow_one')
193
    assert (
194
        'Warning: this option concerns logged in users only, however this form is accessible anonymously. Consider adding an sender role.'
195
        in resp
196
    )
197

  
169 198

  
170 199
def test_forms_edit_management(pub, formdef):
171 200
    create_superuser(pub)
wcs/admin/forms.py
234 234

  
235 235
    def only_allow_one(self):
236 236
        form = Form(enctype='multipart/form-data')
237
        hint = None
238
        if not self.formdef.roles:
239
            hint = _(
240
                'Warning: this option concerns logged in users only, however this form is accessible anonymously. '
241
                'Consider adding an sender role.'
242
            )
237 243
        form.add(
238 244
            CheckboxWidget,
239 245
            'only_allow_one',
240 246
            title=_('Only allow one form per user'),
241 247
            value=self.formdef.only_allow_one,
248
            hint=hint,
242 249
        )
243 250
        return self.handle(form, _('Limit to one form'))
244 251

  
245
-