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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)