Add validation of the file extension for model files, only RTF is accepted for now
This commit is contained in:
parent
85c90d1461
commit
ac72dfb6f5
|
@ -315,15 +315,20 @@ class UploadedFile:
|
|||
|
||||
|
||||
class UploadWidget(FileWidget):
|
||||
def __init__(self, name, directory=None, filename=None, **kwargs):
|
||||
def __init__(self, name, directory=None, filename=None, validation=None, **kwargs):
|
||||
self.directory = directory or 'uploads'
|
||||
self.filename = filename
|
||||
self.validation = validation
|
||||
super(UploadWidget, self).__init__(name, **kwargs)
|
||||
|
||||
def _parse(self, request):
|
||||
super(UploadWidget, self)._parse(request)
|
||||
if not self.value:
|
||||
return
|
||||
if self.validation:
|
||||
valid, msg = self.validation(self.value)
|
||||
if not valid:
|
||||
self.error = msg
|
||||
self.value = UploadedFile(self.directory, self.filename, self.value)
|
||||
|
||||
class FileWithPreviewWidget(CompositeWidget):
|
||||
|
|
|
@ -834,6 +834,11 @@ class ExportToModel(WorkflowStatusItem):
|
|||
evo.comment = _('Form exported in a model')
|
||||
return formdata.get_url() + self.get_directory_name()
|
||||
|
||||
def model_file_validation(self, upload):
|
||||
if upload.base_filename.endswith('.rtf'):
|
||||
return True, ''
|
||||
return False, _('Only RTF files can be used')
|
||||
|
||||
def add_parameters_widgets(self, form, parameters, prefix='', formdef=None):
|
||||
if 'label' in parameters:
|
||||
form.add(StringWidget, '%slabel' % prefix, title = _('Button Label'), value = self.label)
|
||||
|
@ -861,7 +866,7 @@ class ExportToModel(WorkflowStatusItem):
|
|||
hint = htmltext('<div>%s: <a href="?file=%s">%s</a></div>') % \
|
||||
(_('Current value'), widget_name, value.base_filename) + hint
|
||||
form.add(UploadWidget, widget_name, directory='models',
|
||||
filename=filename, title=_('Model'), hint=hint)
|
||||
filename=filename, title=_('Model'), hint=hint, validation=self.model_file_validation)
|
||||
|
||||
def get_directory_name(self):
|
||||
return qommon.misc.simplify(self.label or 'export_to_model', space='_')
|
||||
|
|
Loading…
Reference in New Issue