def create_action(args: argparse.Namespace) -> int: parent, folder = os.path.split(args.new_folder) # no trailing slash if not folder: parent, folder = os.path.split(parent) if not folder: logger.error('Cannot create folder with empty name.') return INVALID_ARG_RETVAL if parent[-1:] == '' or parent[0] != '/': parent = '/' + parent p_id = query.resolve_path(parent) if not p_id: logger.error('Invalid parent path "%s".' % parent) return INVALID_ARG_RETVAL try: r = content.create_folder(folder, p_id) except RequestError as e: logger.debug(str(e.status_code) + e.msg) if e.status_code == 409: logger.warning('Folder "%s" already exists.' % folder) else: logger.error('Error creating folder "%s".' % folder) return ERR_CR_FOLDER else: sync.insert_node(r)
def upload_folder(folder: str, parent_id: str, overwr: bool, force: bool, exclude: list) -> int: if parent_id is None: parent_id = query.get_root_id() parent = query.get_node(parent_id) real_path = os.path.realpath(folder) short_nm = os.path.basename(real_path) curr_node = parent.get_child(short_nm) if not curr_node or curr_node.status == 'TRASH' or parent.status == 'TRASH': try: r = content.create_folder(short_nm, parent_id) sync.insert_node(r) curr_node = query.get_node(r['id']) except RequestError as e: if e.status_code == 409: logger.error('Folder "%s" already exists. Please sync.' % short_nm) else: logger.error('Error creating remote folder "%s".' % short_nm) return ERR_CR_FOLDER elif curr_node.is_file(): logger.error('Cannot create remote folder "%s", because a file of the same name already exists.' % short_nm) return ERR_CR_FOLDER entries = sorted(os.listdir(folder)) ret_val = 0 for entry in entries: full_path = os.path.join(real_path, entry) ret_val |= upload(full_path, curr_node.id, overwr, force, exclude) return ret_val
def create_action(args: argparse.Namespace) -> int: parent, folder = os.path.split(args.new_folder) # no trailing slash if not folder: parent, folder = os.path.split(parent) if not folder: logger.error('Cannot create folder with empty name.') return INVALID_ARG_RETVAL p_id = query.resolve_path(parent) if not p_id: logger.error('Invalid parent path "%s".' % parent) return INVALID_ARG_RETVAL try: r = content.create_folder(folder, p_id) sync.insert_folders([r]) except RequestError as e: logger.debug(str(e.status_code) + e.msg) if e.status_code == 409: logger.warning('Folder "%s" already exists.' % folder) else: logger.error('Error creating folder "%s".' % folder) return ERR_CR_FOLDER
def mkdir(self, path, mode): name = os.path.basename(path) ppath = os.path.dirname(path) pid = query.resolve_path(ppath) if not pid: raise FuseOSError(errno.ENOTDIR) try: r = content.create_folder(name, pid) except RequestError as e: FuseOSError.convert(e) else: sync.insert_node(r)
def traverse_ul_dir(dirs: list, directory: str, parent_id: str, overwr: bool, force: bool, dedup: bool, exclude: list, jobs: list) -> int: """Duplicates local directory structure.""" if parent_id is None: parent_id = query.get_root_id() parent = query.get_node(parent_id) real_path = os.path.realpath(directory) short_nm = os.path.basename(real_path) curr_node = parent.get_child(short_nm) if not curr_node or not curr_node.is_available() or not parent.is_available(): try: r = content.create_folder(short_nm, parent_id) logger.info('Created folder "%s"' % (parent.full_path() + short_nm)) sync.insert_node(r) curr_node = query.get_node(r['id']) except RequestError as e: if e.status_code == 409: logger.error('Folder "%s" already exists. Please sync.' % short_nm) else: logger.error('Error creating remote folder "%s": %s.' % (short_nm, e)) return ERR_CR_FOLDER elif curr_node.is_file(): logger.error('Cannot create remote folder "%s", ' 'because a file of the same name already exists.' % short_nm) return ERR_CR_FOLDER try: entries = sorted(os.listdir(directory)) except OSError as e: logger.error('Skipping directory %s because of an error.' % directory) logger.info(e) return ret_val = 0 for entry in entries: full_path = os.path.join(real_path, entry) ret_val |= create_upload_jobs(dirs, full_path, curr_node.id, overwr, force, dedup, exclude, jobs) return ret_val
def traverse_ul_dir(dirs: list, directory: str, parent_id: str, overwr: bool, force: bool, dedup: bool, exclude: list, exclude_paths: list, jobs: list) -> int: """Duplicates local directory structure.""" if parent_id is None: parent_id = query.get_root_id() parent = query.get_node(parent_id) real_path = os.path.realpath(directory) short_nm = os.path.basename(real_path) curr_node = parent.get_child(short_nm) if not curr_node or not curr_node.is_available() or not parent.is_available(): try: r = content.create_folder(short_nm, parent_id) logger.info('Created folder "%s"' % (parent.full_path() + short_nm)) sync.insert_node(r) curr_node = query.get_node(r['id']) except RequestError as e: if e.status_code == 409: logger.error('Folder "%s" already exists. Please sync.' % short_nm) else: logger.error('Error creating remote folder "%s": %s.' % (short_nm, e)) return ERR_CR_FOLDER elif curr_node.is_file(): logger.error('Cannot create remote folder "%s", ' 'because a file of the same name already exists.' % short_nm) return ERR_CR_FOLDER try: entries = sorted(os.listdir(directory)) except OSError as e: logger.error('Skipping directory %s because of an error.' % directory) logger.info(e) return ERROR_RETVAL ret_val = 0 for entry in entries: full_path = os.path.join(real_path, entry) ret_val |= create_upload_jobs(dirs, full_path, curr_node.id, overwr, force, dedup, exclude, exclude_paths, jobs) return ret_val
def mkdir(self, path, mode): logger.debug('+mkdir %s' % path) name = os.path.basename(path) ppath = os.path.dirname(path) pid = query.resolve_path(ppath) if not pid: raise FuseOSError(errno.ENOTDIR) try: r = content.create_folder(name, pid) except RequestError as e: if e.status_code == e.CODE.CONN_EXCEPTION: raise FuseOSError(errno.ECOMM) elif e.status_code == 409: raise FuseOSError(errno.EEXIST) else: raise FuseOSError(errno.EREMOTEIO) else: sync.insert_node(r)
def upload_folder(folder: str, parent_id: str, overwr: bool, force: bool, exclude: list) -> int: if parent_id is None: parent_id = query.get_root_id() parent = query.get_node(parent_id) real_path = os.path.realpath(folder) short_nm = os.path.basename(real_path) curr_node = parent.get_child(short_nm) if not curr_node or curr_node.status == 'TRASH' or parent.status == 'TRASH': try: r = content.create_folder(short_nm, parent_id) sync.insert_node(r) curr_node = query.get_node(r['id']) except RequestError as e: if e.status_code == 409: logger.error('Folder "%s" already exists. Please sync.' % short_nm) else: logger.error('Error creating remote folder "%s".' % short_nm) return ERR_CR_FOLDER elif curr_node.is_file(): logger.error( 'Cannot create remote folder "%s", because a file of the same name already exists.' % short_nm) return ERR_CR_FOLDER entries = sorted(os.listdir(folder)) ret_val = 0 for entry in entries: full_path = os.path.join(real_path, entry) ret_val |= upload(full_path, curr_node.id, overwr, force, exclude) return ret_val
def create_random_dir(self): nm = gen_rand_nm() n = content.create_folder(nm) self.assertIn('id', n) return n['id']