def fileops_createfolder(): # Root and path data are passed as POST data rather than URL args. root = request.form['root'] path_ = request.form['path'] tools.validate_root_or_abort(root) tools.validate_path_or_abort(path_) # A file operation is always traduced by a new Commit object in order to # track the changes. try: commit = database.create_commit(root) ref_node, new_node = database.copy_hierarchy(root, path_, commit.root) except database.MissingNodeException: raise BasicError(404, E_NON_EXISTING_DESTINATION_PATH) # To stick with Dropbox behaviour, we raise a 403 if the directory already # exists. treename = tools.split_path(path_)[-1] existing = ref_node and ref_node.sub_trees.get(treename) if existing and not existing.is_deleted: raise BasicError(403, E_DIR_ALREADY_EXISTS) # Create the new directory and commit the change. output = models.TreeLink(tree=models.Tree(), path=treename) new_node.sub_trees[treename] = output database.store_commit(root, commit) return metadata.make_metadata(root, path_, output)
def _get_params(): # Root and path data are passed as POST data rather than URL args. root, path_ = tools.get_params(request.form, 'root', 'path') tools.validate_root_or_abort(root) tools.validate_path_or_abort(path_) return root, path_
def get_response(self, environ): try: tools.validate_path_or_abort(self.path) except BasicError, e: return e.format_response()
def _get_params(): items = tools.get_params(request.form, 'root', 'from_path', 'to_path') tools.validate_root_or_abort(items[0]) tools.validate_path_or_abort(items[1]) tools.validate_path_or_abort(items[2]) return items