Ejemplo n.º 1
0
def get_applications(request):
    user = request.user
    input_data = read_json_body(request, default={})
    query = make_application_query(input_data)
    apps = _get_applications(query, request_user=user)
    data = get_applications_details(apps)
    return json_response(data)
Ejemplo n.º 2
0
def get_memberships(request):
    user = request.user
    input_data = read_json_body(request, default={})
    query = make_membership_query(input_data)
    memberships = _get_memberships(query, request_user=user)
    data = get_memberships_details(memberships, user)
    return json_response(data)
Ejemplo n.º 3
0
def submit_modification(app_data, user, project_id):
    owner = app_data.get("owner")
    if owner is not None:
        try:
            owner = AstakosUser.objects.accepted().get(uuid=owner)
        except AstakosUser.DoesNotExist:
            raise faults.BadRequest("User does not exist.")

    name = app_data.get("name")

    join_policy = app_data.get("join_policy")
    if join_policy is not None:
        try:
            join_policy = MEMBERSHIP_POLICY[join_policy]
        except KeyError:
            raise faults.BadRequest("Invalid join policy")

    leave_policy = app_data.get("leave_policy")
    if leave_policy is not None:
        try:
            leave_policy = MEMBERSHIP_POLICY[leave_policy]
        except KeyError:
            raise faults.BadRequest("Invalid leave policy")

    start_date = app_data.get("start_date")
    end_date = app_data.get("end_date")

    max_members = app_data.get("max_members")
    if max_members is not None:
        max_members = _parse_max_members(max_members)

    private = _get_maybe_boolean(app_data, "private")
    homepage = _get_maybe_string(app_data, "homepage")
    description = _get_maybe_string(app_data, "description")
    comments = _get_maybe_string(app_data, "comments")
    resources = app_data.get("resources", {})

    submit = functions.submit_application
    with ExceptionHandler():
        application = submit(
            owner=owner,
            name=name,
            project_id=project_id,
            homepage=homepage,
            description=description,
            start_date=start_date,
            end_date=end_date,
            member_join_policy=join_policy,
            member_leave_policy=leave_policy,
            limit_on_members_number=max_members,
            private=private,
            comments=comments,
            resources=resources,
            request_user=user)

    result = {"application": application.id,
              "id": application.chain.uuid,
              }
    return json_response(result, status_code=201)
Ejemplo n.º 4
0
def submit_modification(app_data, user, project_id):
    owner = app_data.get("owner")
    if owner is not None:
        try:
            owner = AstakosUser.objects.accepted().get(uuid=owner)
        except AstakosUser.DoesNotExist:
            raise faults.BadRequest("User does not exist.")

    name = app_data.get("name")

    join_policy = app_data.get("join_policy")
    if join_policy is not None:
        try:
            join_policy = MEMBERSHIP_POLICY[join_policy]
        except KeyError:
            raise faults.BadRequest("Invalid join policy")

    leave_policy = app_data.get("leave_policy")
    if leave_policy is not None:
        try:
            leave_policy = MEMBERSHIP_POLICY[leave_policy]
        except KeyError:
            raise faults.BadRequest("Invalid leave policy")

    start_date = app_data.get("start_date")
    end_date = app_data.get("end_date")

    max_members = app_data.get("max_members")
    if max_members is not None:
        max_members = _parse_max_members(max_members)

    private = _get_maybe_boolean(app_data, "private")
    homepage = _get_maybe_string(app_data, "homepage")
    description = _get_maybe_string(app_data, "description")
    comments = _get_maybe_string(app_data, "comments")
    resources = app_data.get("resources", {})

    submit = functions.submit_application
    with ExceptionHandler():
        application = submit(
            owner=owner,
            name=name,
            project_id=project_id,
            homepage=homepage,
            description=description,
            start_date=start_date,
            end_date=end_date,
            member_join_policy=join_policy,
            member_leave_policy=leave_policy,
            limit_on_members_number=max_members,
            private=private,
            comments=comments,
            resources=resources,
            request_user=user)

    result = {"application": application.id,
              "id": application.chain.uuid,
              }
    return json_response(result, status_code=201)
Ejemplo n.º 5
0
def join_project(data, request_user):
    project_id = data.get("project")
    if not isinstance(project_id, (basestring, int)):
        raise faults.BadRequest("Invalid project ID: %s" % project_id)
    with ExceptionHandler():
        membership = functions.join_project(project_id, request_user)
    response = {"id": membership.id}
    return json_response(response)
Ejemplo n.º 6
0
def enroll_user(data, request_user):
    project_id = data.get("project")
    email = data.get("user")
    with ExceptionHandler():
        m = functions.enroll_member_by_email(project_id, email, request_user)

    response = {"id": m.id}
    return json_response(response)
Ejemplo n.º 7
0
def get_projects(request):
    user = request.user
    input_data = read_json_body(request, default={})
    filters = input_data.get("filter", {})
    query = make_project_query(filters)
    projects = _get_projects(query, request_user=user)
    data = get_projects_details(projects, request_user=user)
    return json_response(data)
Ejemplo n.º 8
0
def join_project(data, request_user):
    project_id = data.get("project")
    if not isinstance(project_id, (basestring, int)):
        raise faults.BadRequest("Invalid project ID: %s" % project_id)
    with ExceptionHandler():
        membership = functions.join_project(project_id, request_user)
    response = {"id": membership.id}
    return json_response(response)
Ejemplo n.º 9
0
def enroll_user(data, request_user):
    project_id = data.get("project")
    email = data.get("user")
    with ExceptionHandler():
        m = functions.enroll_member_by_email(
            project_id, email, request_user)

    response = {"id": m.id}
    return json_response(response)
Ejemplo n.º 10
0
def enroll_user(data, request_user):
    project_id = data.get("project")
    if not isinstance(project_id, (basestring, int)):
        raise faults.BadRequest("Invalid project ID: %s" % project_id)
    email = data.get("user")
    with ExceptionHandler():
        m = functions.enroll_member_by_email(project_id, email, request_user)

    response = {"id": m.id}
    return json_response(response)
Ejemplo n.º 11
0
def enroll_user(data, request_user):
    project_id = data.get("project")
    if not isinstance(project_id, (basestring, int)):
        raise faults.BadRequest("Invalid project ID: %s" % project_id)
    email = data.get("user")
    with ExceptionHandler():
        m = functions.enroll_member_by_email(project_id, email, request_user)

    response = {"id": m.id}
    return json_response(response)
Ejemplo n.º 12
0
def get_projects(request):
    user = request.user
    filters = {}
    for key in PROJECT_QUERY.keys():
        value = request.GET.get(key)
        if value is not None:
            filters[key] = value
    mode = request.GET.get("mode", "default")
    query = make_project_query(filters)
    projects = _get_projects(query, mode=mode, request_user=user)
    data = get_projects_details(projects, request_user=user)
    return json_response(data)
Ejemplo n.º 13
0
def get_projects(request):
    user = request.user
    filters = {}
    for key in PROJECT_QUERY.keys():
        value = request.GET.get(key)
        if value is not None:
            filters[key] = value
    mode = request.GET.get("mode", "default")
    query = make_project_query(filters)
    projects = _get_projects(query, mode=mode, request_user=user)
    data = get_projects_details(projects, request_user=user)
    return json_response(data)
Ejemplo n.º 14
0
def membership(request, memb_id):
    user = request.user
    with ExceptionHandler():
        m = _get_membership(memb_id, request_user=user)
    data = get_membership_details(m, user)
    return json_response(data)
Ejemplo n.º 15
0
def join_project(data, request_user):
    project_id = data.get("project")
    with ExceptionHandler():
        membership = functions.join_project(project_id, request_user)
    response = {"id": membership.id}
    return json_response(response)
Ejemplo n.º 16
0
def application(request, app_id):
    user = request.user
    with ExceptionHandler():
        application = _get_application(app_id, user)
    data = get_application_details(application)
    return json_response(data)
Ejemplo n.º 17
0
def submit_application(app_data, user, project_id=None):
    uuid = app_data.get("owner")
    if uuid is None:
        owner = user
    else:
        try:
            owner = AstakosUser.objects.accepted().get(uuid=uuid)
        except AstakosUser.DoesNotExist:
            raise faults.BadRequest("User does not exist.")

    try:
        name = app_data["name"]
    except KeyError:
        raise faults.BadRequest("Name missing.")

    if not valid_project_name(name):
        raise faults.BadRequest("Project name should be in domain format")

    join_policy = app_data.get("join_policy", "moderated")
    try:
        join_policy = MEMBERSHIP_POLICY[join_policy]
    except KeyError:
        raise faults.BadRequest("Invalid join policy")

    leave_policy = app_data.get("leave_policy", "auto")
    try:
        leave_policy = MEMBERSHIP_POLICY[leave_policy]
    except KeyError:
        raise faults.BadRequest("Invalid leave policy")

    start_date = _get_date(app_data, "start_date")
    end_date = _get_date(app_data, "end_date")

    if end_date is None:
        raise faults.BadRequest("Missing end date")

    max_members = app_data.get("max_members")
    if not isinstance(max_members, (int, long)) or max_members < 0:
        raise faults.BadRequest("Invalid max_members")

    homepage = _get_maybe_string(app_data, "homepage")
    description = _get_maybe_string(app_data, "description")
    comments = _get_maybe_string(app_data, "comments")
    resources = app_data.get("resources", {})

    submit = functions.submit_application
    with ExceptionHandler():
        application = submit(
            owner=owner,
            name=name,
            project_id=project_id,
            homepage=homepage,
            description=description,
            start_date=start_date,
            end_date=end_date,
            member_join_policy=join_policy,
            member_leave_policy=leave_policy,
            limit_on_members_number=max_members,
            comments=comments,
            resources=resources,
            request_user=user)

    result = {"application": application.id,
              "id": application.chain_id
              }
    return json_response(result, status_code=201)
Ejemplo n.º 18
0
def get_project(request, project_id):
    user = request.user
    with ExceptionHandler():
        project = _get_project(project_id, request_user=user)
    data = get_project_details(project, user)
    return json_response(data)
Ejemplo n.º 19
0
def submit_new_project(app_data, user):
    uuid = app_data.get("owner")
    if uuid is None:
        owner = user
    else:
        try:
            owner = AstakosUser.objects.accepted().get(uuid=uuid)
        except AstakosUser.DoesNotExist:
            raise faults.BadRequest("User does not exist.")

    try:
        name = app_data["name"]
    except KeyError:
        raise faults.BadRequest("Name missing.")

    join_policy = app_data.get("join_policy", "moderated")
    try:
        join_policy = MEMBERSHIP_POLICY[join_policy]
    except KeyError:
        raise faults.BadRequest("Invalid join policy")

    leave_policy = app_data.get("leave_policy", "auto")
    try:
        leave_policy = MEMBERSHIP_POLICY[leave_policy]
    except KeyError:
        raise faults.BadRequest("Invalid leave policy")

    start_date = app_data.get("start_date")
    end_date = app_data.get("end_date")

    if end_date is None:
        raise faults.BadRequest("Missing end date")

    try:
        max_members = _parse_max_members(app_data["max_members"])
    except KeyError:
        max_members = units.PRACTICALLY_INFINITE

    private = bool(_get_maybe_boolean(app_data, "private"))
    homepage = _get_maybe_string(app_data, "homepage", "")
    description = _get_maybe_string(app_data, "description", "")
    comments = _get_maybe_string(app_data, "comments", "")
    resources = app_data.get("resources", {})

    submit = functions.submit_application
    with ExceptionHandler():
        application = submit(
            owner=owner,
            name=name,
            project_id=None,
            homepage=homepage,
            description=description,
            start_date=start_date,
            end_date=end_date,
            member_join_policy=join_policy,
            member_leave_policy=leave_policy,
            limit_on_members_number=max_members,
            private=private,
            comments=comments,
            resources=resources,
            request_user=user)

    result = {"application": application.id,
              "id": application.chain.uuid,
              }
    return json_response(result, status_code=201)
Ejemplo n.º 20
0
def get_memberships(request):
    user = request.user
    query = make_membership_query(request.GET)
    memberships = _get_memberships(query, request_user=user)
    data = get_memberships_details(memberships, user)
    return json_response(data)
Ejemplo n.º 21
0
def submit_new_project(app_data, user):
    uuid = app_data.get("owner")
    if uuid is None:
        owner = user
    else:
        try:
            owner = AstakosUser.objects.accepted().get(uuid=uuid)
        except AstakosUser.DoesNotExist:
            raise faults.BadRequest("User does not exist.")

    try:
        name = app_data["name"]
    except KeyError:
        raise faults.BadRequest("Name missing.")

    join_policy = app_data.get("join_policy", "moderated")
    try:
        join_policy = MEMBERSHIP_POLICY[join_policy]
    except KeyError:
        raise faults.BadRequest("Invalid join policy")

    leave_policy = app_data.get("leave_policy", "auto")
    try:
        leave_policy = MEMBERSHIP_POLICY[leave_policy]
    except KeyError:
        raise faults.BadRequest("Invalid leave policy")

    start_date = app_data.get("start_date")
    end_date = app_data.get("end_date")

    if end_date is None:
        raise faults.BadRequest("Missing end date")

    try:
        max_members = _parse_max_members(app_data["max_members"])
    except KeyError:
        max_members = units.PRACTICALLY_INFINITE

    private = bool(_get_maybe_boolean(app_data, "private"))
    homepage = _get_maybe_string(app_data, "homepage", "")
    description = _get_maybe_string(app_data, "description", "")
    comments = _get_maybe_string(app_data, "comments", "")
    resources = app_data.get("resources", {})

    submit = functions.submit_application
    with ExceptionHandler():
        application = submit(
            owner=owner,
            name=name,
            project_id=None,
            homepage=homepage,
            description=description,
            start_date=start_date,
            end_date=end_date,
            member_join_policy=join_policy,
            member_leave_policy=leave_policy,
            limit_on_members_number=max_members,
            private=private,
            comments=comments,
            resources=resources,
            request_user=user,
        )

    result = {"application": application.id, "id": application.chain.uuid}
    return json_response(result, status_code=201)
Ejemplo n.º 22
0
def get_memberships(request):
    user = request.user
    query = make_membership_query(request.GET)
    memberships = _get_memberships(query, request_user=user)
    data = get_memberships_details(memberships, user)
    return json_response(data)