def update_lti_course_grades(self, lti_consumer_id, sourcedid_and_grades): lti_consumer = LTIConsumer.query.get(lti_consumer_id) if lti_consumer: current_app.logger.info("Begin LTI Outcomes grade update for lti_consumer: "+str(lti_consumer.id)+" named: "+lti_consumer.tool_consumer_instance_name) for (lis_result_sourcedid, course_grade_id) in sourcedid_and_grades: if course_grade_id: course_grade = CourseGrade.query.get(course_grade_id) grade = course_grade.grade if course_grade else 0.0 current_app.logger.debug("Posting grade for lis_result_sourcedid: "+lis_result_sourcedid) try: LTIOutcome.post_replace_result(lti_consumer, lis_result_sourcedid, grade) except requests.exceptions.ConnectTimeout as error: current_app.logger.error("Failed grade update for lis_result_sourcedid: " + lis_result_sourcedid + " with grade: "+str(grade) + ". "+str(error)) if not self.request.is_eager: self.retry(error) except requests.exceptions.ConnectionError as error: current_app.logger.error("Failed grade update for lis_result_sourcedid: " + lis_result_sourcedid + " with grade: "+str(grade) + ". "+str(error)) if not self.request.is_eager: self.retry(error) else: current_app.logger.info("Failed LTI Outcomes grade update for lti_consumer with id: "+str(lti_consumer_id)+". record not found.")
def test_post_replace_result(self): # no lis_outcome_service_url result = LTIOutcome.post_replace_result(self.lti_consumer, self.lis_result_sourcedid, self.grade) self.assertFalse(result) # add lis_outcome_service_url self.lti_consumer.lis_outcome_service_url = self.lis_outcome_service_url db.session.commit() # no lis_result_sourcedid result = LTIOutcome.post_replace_result(self.lti_consumer, "", self.grade) self.assertFalse(result) # garde < 0.0 result = LTIOutcome.post_replace_result(self.lti_consumer, self.lis_result_sourcedid, -0.1) self.assertFalse(result) # garde > 1.0 result = LTIOutcome.post_replace_result(self.lti_consumer, self.lis_result_sourcedid, 30.0) self.assertFalse(result) # success result = LTIOutcome.post_replace_result(self.lti_consumer, self.lis_result_sourcedid, self.grade) self.assertTrue(result)
def update_lti_assignment_grades(self, lti_consumer_id, sourcedid_and_grades): lti_consumer = LTIConsumer.query.get(lti_consumer_id) if lti_consumer: current_app.logger.info( "Begin LTI Outcomes grade update for lti_consumer: {} named: {}". format(lti_consumer.id, lti_consumer.tool_consumer_instance_name)) for (lis_result_sourcedid, assignment_grade_id) in sourcedid_and_grades: if assignment_grade_id: assignment_grade = AssignmentGrade.query.get( assignment_grade_id) grade = 0.0 submittedAt = None if assignment_grade: grade = assignment_grade.grade submittedAt = assignment_grade.modified.astimezone( ).isoformat() current_app.logger.debug( "Posting grade for lis_result_sourcedid: {}".format( lis_result_sourcedid)) current_app.logger.debug( "Submitted At Time: {}".format(submittedAt)) LTIOutcome.post_replace_result(lti_consumer, lis_result_sourcedid, grade, submittedAt) else: current_app.logger.info( "Failed LTI Outcomes grade update for lti_consumer with id: {}. record not found." .format(lti_consumer_id))
def update_lti_course_grades(self, lti_consumer_id, sourcedid_and_grades): lti_consumer = LTIConsumer.query.get(lti_consumer_id) if lti_consumer: current_app.logger.info( "Begin LTI Outcomes grade update for lti_consumer: {} named: {}". format(lti_consumer.id, lti_consumer.tool_consumer_instance_name)) for (lis_result_sourcedid, course_grade_id) in sourcedid_and_grades: if course_grade_id: course_grade = CourseGrade.query.get(course_grade_id) grade = 0.0 submittedAt = None if course_grade: grade = course_grade.grade # This is timezone unaware, so we have to add a timezone to # it (to properly follow iso 8601). We convert it to the # compair server timezone, on the assumption that the # compair server timezone is the same as mariadb's # timezone. submittedAt = course_grade.modified.astimezone().isoformat( ) current_app.logger.debug( "Posting grade for lis_result_sourcedid: {}".format( lis_result_sourcedid)) current_app.logger.debug( "Submitted At Time: {}".format(submittedAt)) LTIOutcome.post_replace_result(lti_consumer, lis_result_sourcedid, grade, submittedAt) else: current_app.logger.info( "Failed LTI Outcomes grade update for lti_consumer with id: {}. record not found." .format(lti_consumer_id))
def update_lti_assignment_grades(self, lti_consumer_id, sourcedid_and_grades): lti_consumer = LTIConsumer.query.get(lti_consumer_id) if lti_consumer: current_app.logger.info("Begin LTI Outcomes grade update for lti_consumer: {} named: {}".format(lti_consumer.id, lti_consumer.tool_consumer_instance_name)) for (lis_result_sourcedid, assignment_grade_id) in sourcedid_and_grades: if assignment_grade_id: assignment_grade = AssignmentGrade.query.get(assignment_grade_id) grade = assignment_grade.grade if assignment_grade else 0.0 current_app.logger.debug("Posting grade for lis_result_sourcedid: {}".format(lis_result_sourcedid)) LTIOutcome.post_replace_result(lti_consumer, lis_result_sourcedid, grade) else: current_app.logger.info("Failed LTI Outcomes grade update for lti_consumer with id: {}. record not found.".format(lti_consumer_id))
def update_lti_course_grades(self, lti_consumer_id, sourcedid_and_grades): lti_consumer = LTIConsumer.query.get(lti_consumer_id) if lti_consumer: current_app.logger.info( "Begin LTI Outcomes grade update for lti_consumer: {} named: {}". format(lti_consumer.id, lti_consumer.tool_consumer_instance_name)) for (lis_result_sourcedid, course_grade_id) in sourcedid_and_grades: if course_grade_id: course_grade = CourseGrade.query.get(course_grade_id) grade = course_grade.grade if course_grade else 0.0 current_app.logger.debug( "Posting grade for lis_result_sourcedid: {}".format( lis_result_sourcedid)) LTIOutcome.post_replace_result(lti_consumer, lis_result_sourcedid, grade) else: current_app.logger.info( "Failed LTI Outcomes grade update for lti_consumer with id: {}. record not found." .format(lti_consumer_id))
def update_lti_assignment_grades(self, lti_consumer_id, sourcedid_and_grades): lti_consumer = LTIConsumer.query.get(lti_consumer_id) if lti_consumer: current_app.logger.info( "Begin LTI Outcomes grade update for lti_consumer: " + str(lti_consumer.id) + " named: " + lti_consumer.tool_consumer_instance_name) for (lis_result_sourcedid, assignment_grade_id) in sourcedid_and_grades: if assignment_grade_id: assignment_grade = AssignmentGrade.query.get( assignment_grade_id) grade = assignment_grade.grade if assignment_grade else 0.0 current_app.logger.debug( "Posting grade for lis_result_sourcedid: " + lis_result_sourcedid) LTIOutcome.post_replace_result(lti_consumer, lis_result_sourcedid, grade) else: current_app.logger.info( "Failed LTI Outcomes grade update for lti_consumer with id: " + str(lti_consumer_id) + ". record not found.")