Projet

Général

Profil

0001-forms-allow-prefilling-of-file-fields-46929.patch

Frédéric Péters, 25 septembre 2022 14:03

Télécharger (2,15 ko)

Voir les différences:

Subject: [PATCH] forms: allow prefilling of file fields (#46929)

 tests/form_pages/test_file_field.py | 20 ++++++++++++++++++++
 wcs/fields.py                       |  3 +++
 2 files changed, 23 insertions(+)
tests/form_pages/test_file_field.py
396 396
    assert logged_error.summary == 'Failed to set value on field "file"'
397 397
    assert logged_error.exception_class == 'AttributeError'
398 398
    assert logged_error.exception_message == "'str' object has no attribute 'time'"
399

  
400

  
401
def test_form_file_field_prefill(pub):
402
    FormDef.wipe()
403
    formdef = FormDef()
404
    formdef.name = 'test'
405
    formdef.fields = [
406
        fields.FileField(
407
            id='0', label='file', prefill={'type': 'formula', 'value': 'utils.attachment("toto", "test.txt")'}
408
        )
409
    ]
410
    formdef.store()
411

  
412
    resp = get_app(pub).get('/test/')
413
    assert resp.form['f0$token']
414
    assert resp.click('test.txt').body == b'toto'
415
    resp = resp.form.submit('submit')  # -> validation
416
    resp = resp.form.submit('submit')  # -> submit
417
    formdata = formdef.data_class().select()[0]
418
    assert formdata.data['0'].base_filename == 'test.txt'
wcs/fields.py
1626 1626
    def get_view_short_value(self, value, max_len=30, **kwargs):
1627 1627
        return self.get_view_value(value, include_image_thumbnail=False, max_len=max_len, **kwargs)
1628 1628

  
1629
    def get_prefill_value(self, user=None, force_string=True):
1630
        return super().get_prefill_value(user=user, force_string=False)
1631

  
1629 1632
    def get_download_query_string(self, **kwargs):
1630 1633
        if kwargs.get('file_value'):
1631 1634
            return 'hash=%s' % kwargs.get('file_value').file_digest()
1632
-