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