示例#1
0
def enroll_member(project_id, user, request_user=None, reason=None):
    try:
        project = get_project_for_update(project_id)
    except ProjectNotFound as e:
        raise ProjectConflict(e.message)
    enroll_member_checks(project, user, request_user)

    try:
        membership = get_membership(project.id, user.id)
        if not membership.check_action("enroll"):
            m = _(astakos_messages.MEMBERSHIP_ACCEPTED)
            raise ProjectConflict(m)
        membership.perform_action("enroll", actor=request_user, reason=reason)
    except ProjectNotFound:
        membership = new_membership(project,
                                    user,
                                    actor=request_user,
                                    enroll=True)

    quotas.qh_sync_membership(membership)
    if QUOTA_POLICY:
        QUOTA_POLICY.check_state_membership(membership, 'ENROLL')
    logger.info("User %s has been enrolled in %s." %
                (membership.person.log_display, project))

    project_notif.membership_enroll_notify(project, membership.person)
    return membership
示例#2
0
def join_project(project_id, request_user, reason=None):
    project = get_project_for_update(project_id)
    join_project_checks(project)

    try:
        membership = get_membership(project.id, request_user.id)
        if not membership.check_action("join"):
            msg = _(astakos_messages.MEMBERSHIP_ASSOCIATED)
            raise ProjectConflict(msg)
        membership.perform_action("join", actor=request_user, reason=reason)
    except ProjectNotFound:
        membership = new_membership(project, request_user, actor=request_user,
                                    reason=reason)

    join_policy = project.member_join_policy
    if (join_policy == AUTO_ACCEPT_POLICY and (
            not project.violates_members_limit(adding=1))):
        membership.perform_action("accept", actor=request_user, reason=reason)
        quotas.qh_sync_membership(membership)
        logger.info("User %s joined %s." %
                    (request_user.log_display, project))
    else:
        project_notif.membership_request_notify(
            project, membership.person, "join")
        logger.info("User %s requested to join %s." %
                    (request_user.log_display, project))
    return membership
示例#3
0
def remove_membership(memb_id, request_user=None, reason=None):
    project = get_project_of_membership_for_update(memb_id)
    membership = get_membership_by_id(memb_id)
    remove_membership_checks(membership, request_user)
    user = membership.person
    membership.perform_action("remove", actor=request_user, reason=reason)
    quotas.qh_sync_membership(membership)
    logger.info("User %s has been removed from %s." %
                (user.log_display, project))

    project_notif.membership_change_notify(project, user, 'removed')
    return membership
示例#4
0
def unsuspend_membership(memb_id, request_user=None, reason=None):
    project = get_project_of_membership_for_update(memb_id)
    membership = get_membership_by_id(memb_id)
    unsuspend_membership_checks(membership, request_user)
    user = membership.person
    membership.perform_action("unsuspend", actor=request_user, reason=reason)
    quotas.qh_sync_membership(membership)
    if QUOTA_POLICY:
        QUOTA_POLICY.check_state_membership(membership, 'UNSUSPEND')
    logger.info("User %s has been unsuspended from %s." %
                (user.log_display, project))

    project_notif.membership_change_notify(project, user, 'unsuspended')
    return membership
示例#5
0
def accept_membership(memb_id, request_user=None, reason=None):
    project = get_project_of_membership_for_update(memb_id)
    membership = get_membership_by_id(memb_id)
    accept_membership_checks(membership, request_user)
    user = membership.person
    membership.perform_action("accept", actor=request_user, reason=reason)
    quotas.qh_sync_membership(membership)
    if QUOTA_POLICY:
        QUOTA_POLICY.check_state_membership(membership, 'ACCEPT')
    logger.info("User %s has been accepted in %s." %
                (user.log_display, project))

    project_notif.membership_change_notify(project, user, 'accepted')
    return membership
示例#6
0
def leave_project(memb_id, request_user, reason=None):
    project = get_project_of_membership_for_update(memb_id)
    membership = get_membership_by_id(memb_id)
    leave_project_checks(membership, request_user)

    auto_accepted = False
    leave_policy = project.member_leave_policy
    if leave_policy == AUTO_ACCEPT_POLICY:
        membership.perform_action("remove", actor=request_user, reason=reason)
        quotas.qh_sync_membership(membership)
        logger.info("User %s has left %s." %
                    (request_user.log_display, project))
        auto_accepted = True
    else:
        membership.perform_action("leave_request", actor=request_user,
                                  reason=reason)
        logger.info("User %s requested to leave %s." %
                    (request_user.log_display, project))
        project_notif.membership_request_notify(
            project, membership.person, "leave")
    return auto_accepted
示例#7
0
def enroll_member(project_id, user, request_user=None, reason=None):
    try:
        project = get_project_for_update(project_id)
    except ProjectNotFound as e:
        raise ProjectConflict(e.message)
    accept_membership_project_checks(project, request_user)

    try:
        membership = get_membership(project.id, user.id)
        if not membership.check_action("enroll"):
            m = _(astakos_messages.MEMBERSHIP_ACCEPTED)
            raise ProjectConflict(m)
        membership.perform_action("enroll", actor=request_user, reason=reason)
    except ProjectNotFound:
        membership = new_membership(project, user, actor=request_user,
                                    enroll=True)

    quotas.qh_sync_membership(membership)
    logger.info("User %s has been enrolled in %s." %
                (membership.person.log_display, project))

    project_notif.membership_enroll_notify(project, membership.person)
    return membership