Add validation of the file extension for model files, only RTF is accepted for now

This commit is contained in:
Benjamin Dauvergne 2011-06-21 20:07:50 +00:00
parent 85c90d1461
commit ac72dfb6f5
2 changed files with 12 additions and 2 deletions

View File

@ -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):

View File

@ -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='_')