def create_dir(self, ami_path): """Create a new directory""" # make sure its a FSString if not isinstance(ami_path, FSString): raise ValueError("create_dir's ami_path must be a FSString") # check file path fn = FileName(ami_path, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=ami_path) # split into dir and base name dir_name, base_name = fn.get_dir_and_base_name() if base_name == None: raise FSError(INVALID_FILE_NAME, file_name=ami_path) # find parent of dir if dir_name == None: node = self.root_dir else: # no parent dir found node = self.get_dir_path_name(dir_name) if node == None: raise FSError(INVALID_PARENT_DIRECTORY, file_name=ami_path, extra="not found: "+dir_name) node.create_dir(base_name)
def get_create_path_name(self, path_name, suggest_name=None): """get a parent node and path name for creation return: parent_node_or_none, file_name_or_none """ # make sure input is correct if not isinstance(path_name, FSString): raise ValueError( "get_create_path_name's path_name must be a FSString") if suggest_name != None and not isinstance(suggest_name, FSString): raise ValueError( "get_create_path_name's suggest_name must be a FSString") # is root path? fn = FileName(path_name, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=path_name, node=self) # find node if fn.is_root_path_alias(): return self.root_dir, suggest_name else: # try to get path_name as a directory node = self.get_dir_path_name(path_name) if node != None: return node, suggest_name else: # split into dir and file name dn, fn = fn.get_dir_and_base_name() if dn != None: # has a directory -> try to fetch it node = self.get_dir_path_name(dn) else: # no dir -> assume root dir node = self.root_dir if fn != None: # take given name return node, fn else: # use suggested name return node, suggest_name
def get_create_path_name(self, path_name, suggest_name=None): """get a parent node and path name for creation return: parent_node_or_none, file_name_or_none """ # make sure input is correct if not isinstance(path_name, FSString): raise ValueError("get_create_path_name's path_name must be a FSString") if suggest_name != None and not isinstance(suggest_name, FSString): raise ValueError("get_create_path_name's suggest_name must be a FSString") # is root path? fn = FileName(path_name, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=path_name, node=self) # find node if fn.is_root_path_alias(): return self.root_dir, suggest_name else: # try to get path_name as a directory node = self.get_dir_path_name(path_name) if node != None: return node, suggest_name else: # split into dir and file name dn, fn = fn.get_dir_and_base_name() if dn != None: # has a directory -> try to fetch it node = self.get_dir_path_name(dn) else: # no dir -> assume root dir node = self.root_dir if fn != None: # take given name return node, fn else: # use suggested name return node, suggest_name
def create_dir(self, ami_path): """Create a new directory""" # make sure its a FSString if not isinstance(ami_path, FSString): raise ValueError("create_dir's ami_path must be a FSString") # check file path fn = FileName(ami_path, is_intl=self.is_intl) if not fn.is_valid(): raise FSError(INVALID_FILE_NAME, file_name=ami_path) # split into dir and base name dir_name, base_name = fn.get_dir_and_base_name() if base_name == None: raise FSError(INVALID_FILE_NAME, file_name=ami_path) # find parent of dir if dir_name == None: node = self.root_dir else: # no parent dir found node = self.get_dir_path_name(dir_name) if node == None: raise FSError(INVALID_PARENT_DIRECTORY, file_name=ami_path, extra="not found: " + dir_name) node.create_dir(base_name)