Commit 716880e1 authored by Serge S. Koval's avatar Serge S. Koval

Fixed file uploading in FileAdmin.

parent fedd6792
...@@ -36,18 +36,21 @@ class UploadForm(form.BaseForm): ...@@ -36,18 +36,21 @@ class UploadForm(form.BaseForm):
File upload form. Works with FileAdmin instance to check if it is allowed File upload form. Works with FileAdmin instance to check if it is allowed
to upload file with given extension. to upload file with given extension.
""" """
upload = wtf.FileField('File to upload', validators=[wtf.file_required()]) upload = wtf.FileField('File to upload')
def __init__(self, form, admin): def __init__(self, admin):
self.admin = admin self.admin = admin
super(UploadForm, self).__init__(form) super(UploadForm, self).__init__()
def validate_upload(self, field): def validate_upload(self, field):
filename = field.file.filename if not self.upload.has_file():
raise wtf.ValidationError('File required.')
filename = self.upload.data.filename
if not self.admin.is_file_allowed(filename): if not self.admin.is_file_allowed(filename):
raise wtf.ValidationError('Invalid file type') raise wtf.ValidationError('Invalid file type.')
class FileAdmin(BaseView): class FileAdmin(BaseView):
...@@ -331,17 +334,17 @@ class FileAdmin(BaseView): ...@@ -331,17 +334,17 @@ class FileAdmin(BaseView):
flash('File uploading is disabled.', 'error') flash('File uploading is disabled.', 'error')
return redirect(self._get_dir_url('.index', path)) return redirect(self._get_dir_url('.index', path))
form = UploadForm(request.form, self) form = UploadForm(self)
if form.validate_on_submit(): if form.validate_on_submit():
filename = op.join(directory, filename = op.join(directory,
secure_filename(form.upload.file.filename)) secure_filename(form.upload.data.filename))
if op.exists(filename): if op.exists(filename):
flash('File "%s" already exists.' % form.upload.file.filename, flash('File "%s" already exists.' % form.upload.data.filename,
'error') 'error')
else: else:
try: try:
self.save_file(filename, form.upload.file) self.save_file(filename, form.upload.data)
return redirect(self._get_dir_url('.index', path)) return redirect(self._get_dir_url('.index', path))
except Exception, ex: except Exception, ex:
flash('Failed to save file: %s' % ex) flash('Failed to save file: %s' % ex)
......
...@@ -10,7 +10,10 @@ class BaseForm(wtf.Form): ...@@ -10,7 +10,10 @@ class BaseForm(wtf.Form):
Customized form class. Customized form class.
""" """
def __init__(self, formdata=None, obj=None, prefix='', **kwargs): def __init__(self, formdata=None, obj=None, prefix='', **kwargs):
super(BaseForm, self).__init__(formdata, obj, prefix, **kwargs) if formdata:
super(BaseForm, self).__init__(formdata, obj, prefix, **kwargs)
else:
super(BaseForm, self).__init__(obj=obj, prefix=prefix, **kwargs)
self._obj = obj self._obj = obj
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment