From d10d8d4d09cd82cd339c1df0153db0da47dcadd9 Mon Sep 17 00:00:00 2001 From: Stefano Alberto Russo <stefano.russo@gmail.com> Date: Fri, 8 Apr 2022 01:59:02 +0200 Subject: [PATCH] Fixes in the file manager API, including creating the base path user directory if not existent. --- services/webapp/code/rosetta/core_app/api.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/services/webapp/code/rosetta/core_app/api.py b/services/webapp/code/rosetta/core_app/api.py index c52dd77..77f5e26 100644 --- a/services/webapp/code/rosetta/core_app/api.py +++ b/services/webapp/code/rosetta/core_app/api.py @@ -516,7 +516,10 @@ class FileManagerAPI(PrivateGETAPI, PrivatePOSTAPI): # Did we just get a "cannot stat - No such file or directory error? if 'No such file or directory' in out.stderr: - pass + if path == '/': + self.mkdir(self.sanitize_and_prepare_shell_path('/', storage, user), user, storage, force=True) + else: + return data else: raise Exception(out.stderr) @@ -630,12 +633,15 @@ class FileManagerAPI(PrivateGETAPI, PrivatePOSTAPI): return out.stdout - def mkdir(self, path, user, storage): + def mkdir(self, path, user, storage, force=False): path = self.sanitize_and_prepare_shell_path(path, storage, user) # Prepare command - command = self.ssh_command('mkdir {}'.format(path), user, storage.computing) + if force: + command = self.ssh_command('mkdir -p {}'.format(path), user, storage.computing) + else: + command = self.ssh_command('mkdir {}'.format(path), user, storage.computing) # Execute_command out = os_shell(command, capture=True) -- GitLab