def _get_user_course_grades(self, user, course_id): """ Get the user's grade for the given course. Note: For performance reasons, we use the cached gradebook data here. Once persistent grades are enabled on the solutions fork, we'll use CourseGradeFactory instead. """ course_key = get_course_key(course_id) data = get_cached_data('grade', course_id, user.id) params = { 'exclude_users': get_aggregate_exclusion_user_ids(course_key, roles=None) } if not data: course_avg = StudentGradebook.course_grade_avg( course_key, **params) user_grade = StudentGradebook.get_user_grade(course_key, user.id) data = {'user_grade': user_grade, 'course_avg': course_avg} cache_course_data('grade', course_id, {'course_avg': course_avg}) cache_course_user_data('grade', course_id, user.id, {'user_grade': user_grade}) return { 'course_grade': data.get('user_grade'), 'course_average_grade': data.get('course_avg') }
def _get_course_average_grade(self, course_key): """ Get the average grade for all the users in the specified course. Note: For performance reasons, we use the cached gradebook data here. Once persistent grades are enabled on the solutions fork, we'll use CourseGradeFactory instead. """ return StudentGradebook.course_grade_avg(course_key)