file_manager: upload request fix
Make sure that inotify watches are added for new directories created via the upload endpoint. Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
6770a965a6
commit
92423911a9
|
@ -501,7 +501,7 @@ class FileManager:
|
||||||
# Don't start if another print is currently in progress
|
# Don't start if another print is currently in progress
|
||||||
start_print = start_print and not print_ongoing
|
start_print = start_print and not print_ongoing
|
||||||
self.notify_sync_lock = NotifySyncLock(upload_info['dest_path'])
|
self.notify_sync_lock = NotifySyncLock(upload_info['dest_path'])
|
||||||
finfo = self._process_uploaded_file(upload_info)
|
finfo = await self._process_uploaded_file(upload_info)
|
||||||
await self.gcode_metadata.parse_metadata(
|
await self.gcode_metadata.parse_metadata(
|
||||||
upload_info['filename'], finfo).wait()
|
upload_info['filename'], finfo).wait()
|
||||||
if start_print:
|
if start_print:
|
||||||
|
@ -527,7 +527,7 @@ class FileManager:
|
||||||
upload_info: Dict[str, Any]
|
upload_info: Dict[str, Any]
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
self.notify_sync_lock = NotifySyncLock(upload_info['dest_path'])
|
self.notify_sync_lock = NotifySyncLock(upload_info['dest_path'])
|
||||||
self._process_uploaded_file(upload_info)
|
await self._process_uploaded_file(upload_info)
|
||||||
await self.notify_sync_lock.wait(5.)
|
await self.notify_sync_lock.wait(5.)
|
||||||
self.notify_sync_lock = None
|
self.notify_sync_lock = None
|
||||||
return {
|
return {
|
||||||
|
@ -538,13 +538,21 @@ class FileManager:
|
||||||
'action': "create_file"
|
'action': "create_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
def _process_uploaded_file(self,
|
async def _process_uploaded_file(self,
|
||||||
upload_info: Dict[str, Any]
|
upload_info: Dict[str, Any]
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
try:
|
try:
|
||||||
if upload_info['dir_path']:
|
if upload_info['dir_path']:
|
||||||
os.makedirs(os.path.dirname(
|
cur_path = self.file_paths[upload_info['root']]
|
||||||
upload_info['dest_path']), exist_ok=True)
|
dirs: List[str]
|
||||||
|
dirs = upload_info['dir_path'].strip('/').split('/')
|
||||||
|
for subdir in dirs:
|
||||||
|
cur_path = os.path.join(cur_path, subdir)
|
||||||
|
if os.path.exists(cur_path):
|
||||||
|
continue
|
||||||
|
os.mkdir(cur_path)
|
||||||
|
# wait for inotify to create a watch before proceeding
|
||||||
|
await asyncio.sleep(.1)
|
||||||
if upload_info['unzip_ufp']:
|
if upload_info['unzip_ufp']:
|
||||||
tmp_path = upload_info['tmp_file_path']
|
tmp_path = upload_info['tmp_file_path']
|
||||||
finfo = self.get_path_info(tmp_path)
|
finfo = self.get_path_info(tmp_path)
|
||||||
|
|
Loading…
Reference in New Issue