file_manager: rename references from "url_path" to "rel_path"
This is a better description of the item parsed from _convert_path() is a path relative to the "root" directory. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
3b63205e70
commit
453745c1b6
|
@ -117,7 +117,7 @@ class FileManager:
|
||||||
|
|
||||||
async def _handle_directory_request(self, path, method, args):
|
async def _handle_directory_request(self, path, method, args):
|
||||||
directory = args.get('path', "gcodes")
|
directory = args.get('path', "gcodes")
|
||||||
root, url_path, dir_path = self._convert_path(directory)
|
root, rel_path, dir_path = self._convert_path(directory)
|
||||||
method = method.upper()
|
method = method.upper()
|
||||||
if method == 'GET':
|
if method == 'GET':
|
||||||
is_extended = args.get('extended', False)
|
is_extended = args.get('extended', False)
|
||||||
|
@ -132,7 +132,7 @@ class FileManager:
|
||||||
dir_info = self._list_directory(dir_path)
|
dir_info = self._list_directory(dir_path)
|
||||||
# Check to see if a filelist update is necessary
|
# Check to see if a filelist update is necessary
|
||||||
for f in dir_info['files']:
|
for f in dir_info['files']:
|
||||||
fname = os.path.join(url_path, f['filename'])
|
fname = os.path.join(rel_path, f['filename'])
|
||||||
ext = os.path.splitext(f['filename'])[-1].lower()
|
ext = os.path.splitext(f['filename'])[-1].lower()
|
||||||
if root != 'gcodes' or ext not in VALID_GCODE_EXTS:
|
if root != 'gcodes' or ext not in VALID_GCODE_EXTS:
|
||||||
continue
|
continue
|
||||||
|
@ -148,7 +148,7 @@ class FileManager:
|
||||||
os.mkdir(dir_path)
|
os.mkdir(dir_path)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise self.server.error(str(e))
|
raise self.server.error(str(e))
|
||||||
self.notify_filelist_changed("create_dir", url_path, root)
|
self.notify_filelist_changed("create_dir", rel_path, root)
|
||||||
elif method == 'DELETE' and root in FULL_ACCESS_ROOTS:
|
elif method == 'DELETE' and root in FULL_ACCESS_ROOTS:
|
||||||
# Remove a directory
|
# Remove a directory
|
||||||
if directory.strip("/") == root:
|
if directory.strip("/") == root:
|
||||||
|
@ -172,7 +172,7 @@ class FileManager:
|
||||||
os.rmdir(dir_path)
|
os.rmdir(dir_path)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise self.server.error(str(e))
|
raise self.server.error(str(e))
|
||||||
self.notify_filelist_changed("delete_dir", url_path, root)
|
self.notify_filelist_changed("delete_dir", rel_path, root)
|
||||||
else:
|
else:
|
||||||
raise self.server.error("Operation Not Supported", 405)
|
raise self.server.error("Operation Not Supported", 405)
|
||||||
return "ok"
|
return "ok"
|
||||||
|
@ -196,19 +196,20 @@ class FileManager:
|
||||||
ongoing = state in ["printing", "paused"]
|
ongoing = state in ["printing", "paused"]
|
||||||
return ongoing
|
return ongoing
|
||||||
|
|
||||||
def _convert_path(self, url_path):
|
def _convert_path(self, request_path):
|
||||||
parts = url_path.strip("/").split("/")
|
# Parse the root, relative path, and disk path from a remote request
|
||||||
|
parts = request_path.strip("/").split("/")
|
||||||
if not parts:
|
if not parts:
|
||||||
raise self.server.error(f"Invalid path: {url_path}")
|
raise self.server.error(f"Invalid path: {request_path}")
|
||||||
root = parts[0]
|
root = parts[0]
|
||||||
if root not in self.file_paths:
|
if root not in self.file_paths:
|
||||||
raise self.server.error(f"Invalid root path ({root})")
|
raise self.server.error(f"Invalid root path ({root})")
|
||||||
root_path = local_path = self.file_paths[root]
|
disk_path = self.file_paths[root]
|
||||||
url_path = ""
|
rel_path = ""
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
url_path = "/".join(parts[1:])
|
rel_path = "/".join(parts[1:])
|
||||||
local_path = os.path.join(root_path, url_path)
|
disk_path = os.path.join(disk_path, rel_path)
|
||||||
return root, url_path, local_path
|
return root, rel_path, disk_path
|
||||||
|
|
||||||
async def _handle_file_move_copy(self, path, method, args):
|
async def _handle_file_move_copy(self, path, method, args):
|
||||||
source = args.get("source")
|
source = args.get("source")
|
||||||
|
@ -218,8 +219,8 @@ class FileManager:
|
||||||
if destination is None:
|
if destination is None:
|
||||||
raise self.server.error(
|
raise self.server.error(
|
||||||
"File move/copy request missing destination")
|
"File move/copy request missing destination")
|
||||||
source_root, src_url_path, source_path = self._convert_path(source)
|
source_root, src_rel_path, source_path = self._convert_path(source)
|
||||||
dest_root, dst_url_path, dest_path = self._convert_path(destination)
|
dest_root, dst_rel_path, dest_path = self._convert_path(destination)
|
||||||
if dest_root not in FULL_ACCESS_ROOTS:
|
if dest_root not in FULL_ACCESS_ROOTS:
|
||||||
raise self.server.error(
|
raise self.server.error(
|
||||||
f"Destination path is read-only: {dest_root}")
|
f"Destination path is read-only: {dest_root}")
|
||||||
|
@ -243,7 +244,7 @@ class FileManager:
|
||||||
if os.path.isdir(op_result):
|
if os.path.isdir(op_result):
|
||||||
self.gcode_metadata.prune_metadata()
|
self.gcode_metadata.prune_metadata()
|
||||||
else:
|
else:
|
||||||
self.gcode_metadata.remove_file(src_url_path)
|
self.gcode_metadata.remove_file(src_rel_path)
|
||||||
action = "move_item"
|
action = "move_item"
|
||||||
elif path == "/server/files/copy":
|
elif path == "/server/files/copy":
|
||||||
try:
|
try:
|
||||||
|
@ -255,11 +256,11 @@ class FileManager:
|
||||||
raise self.server.error(str(e))
|
raise self.server.error(str(e))
|
||||||
action = "copy_item"
|
action = "copy_item"
|
||||||
if op_result != dest_path:
|
if op_result != dest_path:
|
||||||
dst_url_path = os.path.join(
|
dst_rel_path = os.path.join(
|
||||||
dst_url_path, os.path.basename(op_result))
|
dst_rel_path, os.path.basename(op_result))
|
||||||
self.notify_filelist_changed(
|
self.notify_filelist_changed(
|
||||||
action, dst_url_path, dest_root,
|
action, dst_rel_path, dest_root,
|
||||||
{'path': src_url_path, 'root': source_root})
|
{'path': src_rel_path, 'root': source_root})
|
||||||
return "ok"
|
return "ok"
|
||||||
|
|
||||||
def _list_directory(self, path):
|
def _list_directory(self, path):
|
||||||
|
|
Loading…
Reference in New Issue