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.py
con 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.