コード例 #1
0
def create_course_enrollment(username, course_id, mode, is_active):
    """Create a new course enrollment for the given user.

    Creates a new course enrollment for the specified user username.

    Args:
        username (str): The name of the user to create a new course enrollment for.
        course_id (str): The course to create the course enrollment for.
        mode (str): (Optional) The mode for the new enrollment.
        is_active (boolean): (Optional) Determines if the enrollment is active.

    Returns:
        A serializable dictionary representing the new course enrollment.

    Raises:
        CourseNotFoundError
        CourseEnrollmentFullError
        EnrollmentClosedError
        CourseEnrollmentExistsError

    """
    course_key = CourseKey.from_string(course_id)
    current_course_org = course_id.split(':')[1].split('+')[0]
    site_course_org_filter = configuration_helpers.get_value(
        'course_org_filter')
    if site_course_org_filter == current_course_org or not site_course_org_filter:
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            msg = u"Not user with username '{username}' found.".format(
                username=username)
            log.warn(msg)
            raise UserNotFoundError(msg)

        try:
            enrollment = CourseEnrollment.enroll(user,
                                                 course_key,
                                                 check_access=True)
            return _update_enrollment(enrollment,
                                      is_active=is_active,
                                      mode=mode)
        except NonExistentCourseError as err:
            raise CourseNotFoundError(err.message)
        except EnrollmentClosedError as err:
            raise CourseEnrollmentClosedError(err.message)
        except CourseFullError as err:
            raise CourseEnrollmentFullError(err.message)
        except AlreadyEnrolledError as err:
            enrollment = get_course_enrollment(username, course_id)
            raise CourseEnrollmentExistsError(err.message, enrollment)
    else:
        return NonExistentCourseError
コード例 #2
0
ファイル: data.py プロジェクト: lumsx/edx-platform
def create_course_enrollment(username, course_id, mode, is_active):
    """Create a new course enrollment for the given user.

    Creates a new course enrollment for the specified user username.

    Args:
        username (str): The name of the user to create a new course enrollment for.
        course_id (str): The course to create the course enrollment for.
        mode (str): (Optional) The mode for the new enrollment.
        is_active (boolean): (Optional) Determines if the enrollment is active.

    Returns:
        A serializable dictionary representing the new course enrollment.

    Raises:
        CourseNotFoundError
        CourseEnrollmentFullError
        EnrollmentClosedError
        CourseEnrollmentExistsError

    """
    course_key = CourseKey.from_string(course_id)

    try:
        user = User.objects.get(username=username)
    except User.DoesNotExist:
        msg = u"Not user with username '{username}' found.".format(
            username=username)
        log.warn(msg)
        raise UserNotFoundError(msg)

    try:
        enrollment = CourseEnrollment.enroll(user,
                                             course_key,
                                             check_access=True)
        handle_course_enrollment(course_id, user, 'enroll')
        return _update_enrollment(enrollment, is_active=is_active, mode=mode)
    except NonExistentCourseError as err:
        raise CourseNotFoundError(text_type(err))
    except EnrollmentClosedError as err:
        raise CourseEnrollmentClosedError(text_type(err))
    except CourseFullError as err:
        raise CourseEnrollmentFullError(text_type(err))
    except AlreadyEnrolledError as err:
        enrollment = get_course_enrollment(username, course_id)
        raise CourseEnrollmentExistsError(text_type(err), enrollment)