Commit 2bdb4fba authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #187 from nMustaki/fileadmin-hooks

Fileadmin hooks
parents 9a1dc4e4 4740736e
...@@ -346,6 +346,66 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -346,6 +346,66 @@ class FileAdmin(BaseView, ActionsMixin):
return True return True
def on_rename(self, full_path, dir_base, filename):
"""
Perform some actions after a file or directory has been renamed.
Called from rename method
By default do nothing.
"""
pass
def on_edit_file(self, full_path, path):
"""
Perform some actions after a file has been successfully changed.
Called from edit method
By default do nothing.
"""
pass
def on_file_upload(self, directory, path, filename):
"""
Perform some actions after a file has been successfully uploaded.
Called from upload method
By default do nothing.
"""
pass
def on_mkdir(self, parent_dir, dir_name):
"""
Perform some actions after a directory has successfully been created.
Called from mkdir method
By default do nothing.
"""
pass
def on_directory_delete(self, full_path, dir_name):
"""
Perform some actions after a directory has successfully been deleted.
Called from delete method
By default do nothing.
"""
pass
def on_file_delete(self, full_path, filename):
"""
Perform some actions after a file has successfully been deleted.
Called from delete method
By default do nothing.
"""
pass
@expose('/') @expose('/')
@expose('/b/<path:path>') @expose('/b/<path:path>')
def index(self, path=None): def index(self, path=None):
...@@ -421,11 +481,12 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -421,11 +481,12 @@ class FileAdmin(BaseView, ActionsMixin):
secure_filename(form.upload.data.filename)) secure_filename(form.upload.data.filename))
if op.exists(filename): if op.exists(filename):
flash(gettext('File "%(name)s" already exists.', name=form.upload.data.filename), flash(gettext('File "%(name)s" already exists.', name=filename),
'error') 'error')
else: else:
try: try:
self.save_file(filename, form.upload.data) self.save_file(filename, form.upload.data)
self.on_file_upload(directory, path, filename)
return redirect(self._get_dir_url('.index', path)) return redirect(self._get_dir_url('.index', path))
except Exception, ex: except Exception, ex:
flash(gettext('Failed to save file: %(error)s', error=ex)) flash(gettext('Failed to save file: %(error)s', error=ex))
...@@ -455,6 +516,7 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -455,6 +516,7 @@ class FileAdmin(BaseView, ActionsMixin):
if form.validate_on_submit(): if form.validate_on_submit():
try: try:
os.mkdir(op.join(directory, form.name.data)) os.mkdir(op.join(directory, form.name.data))
self.on_mkdir(directory, form.name.data)
return redirect(dir_url) return redirect(dir_url)
except Exception, ex: except Exception, ex:
flash(gettext('Failed to create directory: %(error)s', ex), 'error') flash(gettext('Failed to create directory: %(error)s', ex), 'error')
...@@ -489,12 +551,14 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -489,12 +551,14 @@ class FileAdmin(BaseView, ActionsMixin):
try: try:
shutil.rmtree(full_path) shutil.rmtree(full_path)
self.on_diretory_delete(full_path, path)
flash(gettext('Directory "%s" was successfully deleted.' % path)) flash(gettext('Directory "%s" was successfully deleted.' % path))
except Exception, ex: except Exception, ex:
flash(gettext('Failed to delete directory: %(error)s', error=ex), 'error') flash(gettext('Failed to delete directory: %(error)s', error=ex), 'error')
else: else:
try: try:
os.remove(full_path) os.remove(full_path)
self.on_file_delete(full_path, path)
flash(gettext('File "%(name)s" was successfully deleted.', name=path)) flash(gettext('File "%(name)s" was successfully deleted.', name=path))
except Exception, ex: except Exception, ex:
flash(gettext('Failed to delete file: %(name)s', name=ex), 'error') flash(gettext('Failed to delete file: %(name)s', name=ex), 'error')
...@@ -530,6 +594,7 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -530,6 +594,7 @@ class FileAdmin(BaseView, ActionsMixin):
filename = secure_filename(form.name.data) filename = secure_filename(form.name.data)
os.rename(full_path, op.join(dir_base, filename)) os.rename(full_path, op.join(dir_base, filename))
self.on_rename(full_path, dir_base, filename)
flash(gettext('Successfully renamed "%(src)s" to "%(dst)s"', flash(gettext('Successfully renamed "%(src)s" to "%(dst)s"',
src=op.basename(path), src=op.basename(path),
dst=filename)) dst=filename))
...@@ -575,6 +640,7 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -575,6 +640,7 @@ class FileAdmin(BaseView, ActionsMixin):
flash(gettext("Error saving changes to %(name)s.", name=path), 'error') flash(gettext("Error saving changes to %(name)s.", name=path), 'error')
error = True error = True
else: else:
self.on_edit_file(full_path, path)
flash(gettext("Changes to %(name)s saved successfully.", name=path)) flash(gettext("Changes to %(name)s saved successfully.", name=path))
return redirect(next_url) return redirect(next_url)
else: else:
...@@ -600,7 +666,7 @@ class FileAdmin(BaseView, ActionsMixin): ...@@ -600,7 +666,7 @@ class FileAdmin(BaseView, ActionsMixin):
form.content.data = content form.content.data = content
return self.render(self.edit_template, dir_url=dir_url, path=path, return self.render(self.edit_template, dir_url=dir_url, path=path,
form=form, error=error) form=form, error=error)
@expose('/action/', methods=('POST',)) @expose('/action/', methods=('POST',))
def action_view(self): def action_view(self):
......
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