Modificar el reporte de calificaciones de Open Edx

Modificar el reporte de calificaciones de Open Edx

Uno de mis cliente no le agrada como OpenEdx como genera los grade book en formato csv, debido a que este reporte no presenta las calificaciones con dos décimas. Por lo cual me dia a la tarea de modificar el reporte.

Para esto debemos de editar el archivo /edx/app/edxapp/edx-platform/lms/djangoapps/instructor_task/tasks_helper/grades.py y buscar la función _user_grade_results.

def _user_grade_results(self, course_grade, context):
        """
        Returns a list of grade results for the given course_grade corresponding
        to the headers for this report.
        """
        grade_results = []
        for assignment_type, assignment_info in context.graded_assignments.iteritems():
            for subsection_location in assignment_info['subsection_headers']:
                try:
                    subsection_grade = course_grade.graded_subsections_by_format[assignment_type][subsection_location]
                except KeyError:
                    grade_result = u'Not Available'
                else:
                    if subsection_grade.graded_total.first_attempted is not None:
                        grade_result = subsection_grade.graded_total.earned / subsection_grade.graded_total.possible
                    else:
                        grade_result = u'Not Attempted'
                grade_results.append([grade_result * 100])
            if assignment_info['separate_subsection_avg_headers']:
                assignment_average = course_grade.grader_result['grade_breakdown'].get(assignment_type, {}).get(
                    'percent'
                )
                grade_results.append([100*assignment_average])
        return [course_grade.percent * 100] + _flatten(grade_results)

Modificamos dos líneas solamente, la primera es grade_results.append([grade_result]), la cual modifica las calificaciones de cada actividad. La segunda línea a editar es grade_results.append([100*assignment_average]) return [course_grade.percent] + _flatten(grade_results), modifica la calificacion final del curso.

Por ultimo compilamos el archivo grades.pycon el comando

python -m compileall grades.py

Y reiniciamos la plataforma con /edx/bin/supervisorctl restart all.

Espero que les sea de utilidad.

NOTA: Recuerda que si editar el archivo como root, debes de cambiar el propietario del archivo compilado por edxapp.