forms: allow prefilling of file fields (#46929)
This commit is contained in:
parent
e896f16093
commit
0a9ba667cf
|
@ -396,3 +396,26 @@ def test_form_file_field_with_wrong_value(pub):
|
|||
assert logged_error.summary == 'Failed to set value on field "file"'
|
||||
assert logged_error.exception_class == 'AttributeError'
|
||||
assert logged_error.exception_message == "'str' object has no attribute 'time'"
|
||||
|
||||
|
||||
def test_form_file_field_prefill(pub):
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'test'
|
||||
formdef.fields = [
|
||||
fields.FileField(
|
||||
id='0',
|
||||
label='file',
|
||||
prefill={'type': 'string', 'value': '{{ "test"|qrcode }}'},
|
||||
)
|
||||
]
|
||||
formdef.store()
|
||||
|
||||
resp = get_app(pub).get('/test/')
|
||||
assert resp.form['f0$token']
|
||||
assert resp.click('qrcode.png').content_type == 'image/png'
|
||||
resp = resp.form.submit('submit') # -> validation
|
||||
resp = resp.form.submit('submit') # -> submit
|
||||
formdata = formdef.data_class().select()[0]
|
||||
assert formdata.data['0'].base_filename == 'qrcode.png'
|
||||
assert formdata.data['0'].get_content().startswith(b'\x89PNG')
|
||||
|
|
|
@ -1672,6 +1672,9 @@ class FileField(WidgetField):
|
|||
def get_view_short_value(self, value, max_len=30, **kwargs):
|
||||
return self.get_view_value(value, include_image_thumbnail=False, max_len=max_len, **kwargs)
|
||||
|
||||
def get_prefill_value(self, user=None, force_string=True):
|
||||
return super().get_prefill_value(user=user, force_string=False)
|
||||
|
||||
def get_download_query_string(self, **kwargs):
|
||||
if kwargs.get('file_value'):
|
||||
return 'hash=%s' % kwargs.get('file_value').file_digest()
|
||||
|
|
Loading…
Reference in New Issue