Exemplo n.º 1
0
def add(request, username, name, root=0, id=settings.STORAGE_BUCKET_ID, _ts=None, csrfmiddlewaretoken=None, **kwargs):
    kwargs["page"] = "storage/directory"
    data = {"view": True}

    if not utils.is_numeric(id, root):
        return utils.fail(kwargs, data=data, errors="Invalid Request")

    data["regions"] = settings.STORAGE_NAMES if float(id) == settings.STORAGE_BUCKET_ID else False
    user = request.user.get_profile().id if request.user.is_authenticated() else -1

    try:
        s = Directory.objects.get(id=id)
        p = request.user.get_profile() if request.user.is_authenticated() else None

        name = get_available_name(name, s, user, request)
        try:
            d = Directory(name=name, type="directory", parent=s, owner=p, author=request.user.username)
            if data["regions"]:
                d.root = int(root)
            d.add(user=user, ecolor="all." + request.user.username)
            data["directory"] = d
        except utils.GuardException:
            return utils.fail(kwargs, data=data, errors="Not Authorized")

        data["storage"] = s
        data["admin"] = p.guard(user=user, action="add")
    except Directory.DoesNotExist:
        return utils.fail(kwargs, data=data, errors="Invalid Storage")

    return utils.success(kwargs, data=data)