Commit f8bd572a authored by Serge S. Koval's avatar Serge S. Koval

Customizable upload form for file admin

parent 20ee4cd2
...@@ -155,6 +155,11 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -155,6 +155,11 @@ class FileAdmin(BaseView, ActionsMixin):
Edit template Edit template
""" """
upload_form = UploadForm
"""
Upload form class
"""
def __init__(self, base_path, base_url=None, def __init__(self, base_path, base_url=None,
name=None, category=None, endpoint=None, url=None, name=None, category=None, endpoint=None, url=None,
verify_path=True): verify_path=True):
...@@ -410,6 +415,17 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -410,6 +415,17 @@ class FileAdmin(BaseView, ActionsMixin):
""" """
pass pass
def _save_form_files(self, directory, path, form):
filename = op.join(directory,
secure_filename(form.upload.data.filename))
if op.exists(filename):
flash(gettext('File "%(name)s" already exists.', name=filename),
'error')
else:
self.save_file(filename, form.upload.data)
self.on_file_upload(directory, path, filename)
@expose('/') @expose('/')
@expose('/b/<path:path>') @expose('/b/<path:path>')
def index(self, path=None): def index(self, path=None):
...@@ -489,21 +505,13 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -489,21 +505,13 @@ class FileAdmin(BaseView, ActionsMixin):
flash(gettext(gettext('Permission denied.'))) flash(gettext(gettext('Permission denied.')))
return redirect(self._get_dir_url('.index')) return redirect(self._get_dir_url('.index'))
form = UploadForm(self) form = self.upload_form(self)
if helpers.validate_form_on_submit(form): if helpers.validate_form_on_submit(form):
filename = op.join(directory, try:
secure_filename(form.upload.data.filename)) self._save_form_files(directory, path, form)
return redirect(self._get_dir_url('.index', path))
if op.exists(filename): except Exception as ex:
flash(gettext('File "%(name)s" already exists.', name=filename), flash(gettext('Failed to save file: %(error)s', error=ex))
'error')
else:
try:
self.save_file(filename, form.upload.data)
self.on_file_upload(directory, path, filename)
return redirect(self._get_dir_url('.index', path))
except Exception as ex:
flash(gettext('Failed to save file: %(error)s', error=ex))
return self.render(self.upload_template, form=form) return self.render(self.upload_template, form=form)
......
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