Hi. I’ve been a long-time student on edx.org, and throughout numerous courses over years’ span, including some with MITx’s Micromasters, there has been one bug that involved disabling the progress bars to avoid giving away exam answers. So I decided to see if anything could be done about it. The issue is that it seems reasonable that when
section.show_correctness == 'past_due', the progress graph should also disable the bars for just that section.
However, while an object containing all the subsection grade objects (
courseware_summary) is passed through the context to render the progress page, only the
grade_summary is passed to progress_graph.js. This latter object is created from the
summary property of
CourseGrade, which calls
grade() from xmodule/graders.py to set up all the bars. Interestingly, these parts (the property and the xmodules) are marked deprecated in the code.
I wonder if it’s possible to add this functionality, whether by adding
show_correctness to the summary in
CourseGrade or the templates, and whether you guys think this is a good idea. I wouldn’t mind taking a shot at it if the feature desirable.
Here’s an example of what I’d be proposing:
@lazy def graded_subsections_by_format(self): """ Returns grades for the subsections in the course in a dict keyed by subsection format types. """ subsections_by_format = defaultdict(OrderedDict) for chapter in six.itervalues(self.chapter_grades): for subsection_grade in chapter['sections']: if subsection_grade.graded: graded_total = subsection_grade.graded_total if graded_total.possible > 0: # THESE LINES ARE ADDED # ====================== if not subsection_grade.show_grades(self.user.is_staff): subsection_grade.graded_total.earned = 0 # ====================== subsections_by_format[subsection_grade.format][subsection_grade.location] = subsection_grade return subsections_by_format