def test_statement_notpassed(self):
     """
     Validate statement when learner completes a course.
     """
     statement = LearnerCourseCompletionStatement(
         self.site, self.user, self.mock_social_auth, self.course_overview,
         self.course_grade_notpassed, 'course')
     self.assertDictEqual(json.loads(statement.to_json()),
                          self.expected_notpassed)
 def test_statement(self):
     """
     Validate statement when learner completes a course.
     """
     statement = LearnerCourseCompletionStatement(
         self.user,
         self.course_overview,
         self.user_details,
         self.course_details,
         self.course_grade,
     )
     assert json.loads(statement.to_json()) == self.expected
 def test_statement_courserun(self):
     """
     Validate statement when learner completes a course.
     """
     statement = LearnerCourseCompletionStatement(
         self.site,
         self.user,
         self.mock_social_auth,
         self.course_overview,
         self.course_grade,
         ContentType.COURSE_RUN,
     )
     self.assertDictEqual(json.loads(statement.to_json()),
                          self.expected_courserun)
示例#4
0
def send_course_completion_statement(lrs_configuration, user, course_overview,
                                     course_grade):
    """
    Send xAPI statement for course completion.

    Arguments:
         lrs_configuration (XAPILRSConfiguration): XAPILRSConfiguration instance where to send statements.
         user (User): Django User object.
         course_overview (CourseOverview): Course over view object containing course details.
         course_grade (CourseGrade): course grade object.
    """
    user_details = LearnerInfoSerializer(user)
    course_details = CourseInfoSerializer(
        course_overview,
        context={'site': lrs_configuration.enterprise_customer.site})
    LOGGER.info(
        'Sending course completion to xAPI for user: {username}, course: {course_key} with {percentage}%'
        .format(username=user.username if user else '',
                course_key=six.text_type(course_overview.id),
                percentage=course_grade.percent * 100))
    statement = LearnerCourseCompletionStatement(
        user,
        course_overview,
        user_details.data,
        course_details.data,
        course_grade,
    )
    EnterpriseXAPIClient(lrs_configuration).save_statement(statement)
示例#5
0
def send_course_completion_statement(lrs_configuration, user, course_overview,
                                     course_grade, object_type,
                                     response_fields):
    """
    Send xAPI statement for course completion.

    Arguments:
         lrs_configuration (XAPILRSConfiguration): XAPILRSConfiguration instance where to send statements.
         user (User): User object.
         course_overview (CourseOverview): Course overview object containing course details.
         course_grade (CourseGrade): Course grade object.
    """
    event_type = 'completion'
    course_id = course_overview.course_key if object_type == 'course' else six.text_type(
        course_overview.id)
    username = user.username if user else 'Unavailable'
    user_social_auth = get_user_social_auth(
        user, lrs_configuration.enterprise_customer)

    statement = LearnerCourseCompletionStatement(
        lrs_configuration.enterprise_customer.site,
        user,
        user_social_auth,
        course_overview,
        course_grade,
        object_type,
    )

    response_fields = _send_statement(
        statement,
        object_type,
        event_type,
        lrs_configuration,
        lrs_configuration.enterprise_customer.name,
        username,
        course_id,
        response_fields,
    )

    return response_fields
示例#6
0
def send_course_completion_statement(lrs_configuration, user, course_overview,
                                     course_grade):
    """
    Send xAPI statement for course completion.

    Arguments:
         lrs_configuration (XAPILRSConfiguration): XAPILRSConfiguration instance where to send statements.
         user (User): Django User object.
         course_overview (CourseOverview): Course over view object containing course details.
         course_grade (CourseGrade): course grade object.
    """
    user_details = LearnerInfoSerializer(user)
    course_details = CourseInfoSerializer(course_overview)

    statement = LearnerCourseCompletionStatement(
        user,
        course_overview,
        user_details.data,
        course_details.data,
        course_grade,
    )
    EnterpriseXAPIClient(lrs_configuration).save_statement(statement)