form: make it possible to specify the expected file type (#5732)
This commit is contained in:
parent
d19b4ce3be
commit
978a2dd764
|
@ -619,8 +619,22 @@ register_field_class(BoolField)
|
|||
class FileField(WidgetField):
|
||||
key = 'file'
|
||||
description = N_('File Upload')
|
||||
file_type = []
|
||||
|
||||
widget_class = FileWithPreviewWidget
|
||||
extra_attributes = ['file_type']
|
||||
|
||||
def fill_admin_form(self, form):
|
||||
WidgetField.fill_admin_form(self, form)
|
||||
file_types = [
|
||||
('audio/*', _('Sound files')),
|
||||
('video/*', _('Video files')),
|
||||
('image/*', _('Image files'))]
|
||||
form.add(CheckboxesWidget, 'file_type', title=_('File type suggestion'),
|
||||
value=self.file_type, elements=file_types, inline=True)
|
||||
|
||||
def get_admin_attributes(self):
|
||||
return WidgetField.get_admin_attributes(self) + ['file_type']
|
||||
|
||||
def get_view_value(self, value):
|
||||
return htmltext('<a download="%s" href="[download]?f=%s">%s</a>') % (
|
||||
|
|
|
@ -486,6 +486,7 @@ class FileWithPreviewWidget(CompositeWidget):
|
|||
ondisk so it has a "readonly" mode where the filename is shown."""
|
||||
|
||||
extra_css_class = 'file-upload-widget'
|
||||
file_type = None
|
||||
|
||||
def __init__(self, name, value=None, **kwargs):
|
||||
CompositeWidget.__init__(self, name, value, **kwargs)
|
||||
|
@ -493,8 +494,11 @@ class FileWithPreviewWidget(CompositeWidget):
|
|||
self.preview = kwargs.get('readonly')
|
||||
self.add(HiddenWidget, 'token')
|
||||
if not self.preview:
|
||||
self.add(FileWidget, 'file', render_br=False,
|
||||
attrs={'data-url': get_publisher().get_root_url() + 'tmp-upload'})
|
||||
attrs = {'data-url': get_publisher().get_root_url() + 'tmp-upload'}
|
||||
self.file_type = kwargs.pop('file_type', None)
|
||||
if self.file_type:
|
||||
attrs['accept'] = ','.join(self.file_type)
|
||||
self.add(FileWidget, 'file', render_br=False, attrs=attrs)
|
||||
if value:
|
||||
self.set_value(value)
|
||||
|
||||
|
|
Loading…
Reference in New Issue