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