Пример #1
0
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)
Пример #2
0
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_
Пример #3
0
 def get_response(self, environ):
     try:
         tools.validate_path_or_abort(self.path)
     except BasicError, e:
         return e.format_response()
Пример #4
0
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