file_manager: add websocket method for file delete

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Arksine 2020-09-03 20:32:03 -04:00
parent 7078d5c980
commit ae49dfe8f2
2 changed files with 10 additions and 3 deletions

View File

@ -339,11 +339,10 @@ class FileRequestHandler(AuthorizedFileHandler):
if 'DELETE' not in self.methods:
raise tornado.web.HTTPError(405)
path = self.request.path.lstrip("/").split("/", 3)[-1]
filename = path.split("/", 1)[-1]
path = self.request.path.lstrip("/").split("/", 2)[-1]
file_manager = self.server.lookup_plugin('file_manager')
try:
file_manager.delete_file(path)
filename = await file_manager.delete_file(path)
except self.server.error as e:
if e.status_code == 403:
raise tornado.web.HTTPError(

View File

@ -38,6 +38,9 @@ class FileManager:
"/server/files/move", ['POST'], self._handle_file_move_copy)
self.server.register_endpoint(
"/server/files/copy", ['POST'], self._handle_file_move_copy)
self.server.register_endpoint(
"/server/files/delete_file", ['DELETE'], self._handle_file_delete,
protocol=["websocket"])
# Register APIs to handle file uploads
self.server.register_upload_handler("/server/files/upload")
self.server.register_upload_handler("/api/files/local")
@ -441,6 +444,10 @@ class FileManager:
return simple_list
return flist
async def _handle_file_delete(self, path, method, args):
file_path = args.get("path")
return await self.delete_file(file_path)
async def delete_file(self, path):
parts = path.split("/", 1)
root = parts[0]
@ -462,6 +469,7 @@ class FileManager:
raise
os.remove(full_path)
self.notify_filelist_changed('delete_file', filename, root)
return filename
def notify_filelist_changed(self, action, fname, base, source_item={}):
self._update_file_list(base, do_notify=True)