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')
        }
Exemple #2
0
    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)