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) qh_sync_user(user) logger.info("User %s has been enrolled in %s." % (membership.person.log_display, project)) membership_enroll_notify(project, membership.person) return membership
def enroll_member(project_id, user, request_user=None): get_chain_for_update(project_id) project = get_project_by_id(project_id) accept_membership_checks(project, request_user) membership, created = ProjectMembership.objects.get_or_create( project=project, person=user) if not membership.can_accept(): m = _(astakos_messages.NOT_MEMBERSHIP_REQUEST) raise PermissionDenied(m) membership.accept() qh_sync_user(user) logger.info("User %s has been enrolled in %s." % (membership.person.log_display, project)) membership_enroll_notify(project, membership.person) return membership