'Returns the SubsectionGrade object for the student and subsection.
If read_only is True, doesn\'t save any updates to the grades.'

def create(self, subsection, read_only=False):

    self._log_event(log.debug, u'create,    read_only:    {0},    subsection:    {1}'.format(read_only, subsection.location), subsection)
    subsection_grade = self._get_bulk_cached_grade(subsection)
    if (not subsection_grade):
        if assume_zero_if_absent(self.course_data.course_key):
            subsection_grade = ZeroSubsectionGrade(subsection, self.course_data)
        else:
            subsection_grade = SubsectionGrade(subsection).init_from_structure(self.student, self.course_data.structure, self._submissions_scores, self._csm_scores)
            if should_persist_grades(self.course_data.course_key):
                if read_only:
                    self._unsaved_subsection_grades[subsection_grade.location] = subsection_grade
                else:
                    grade_model = subsection_grade.create_model(self.student)
                    self._update_saved_subsection_grade(subsection.location, grade_model)
    return subsection_grade
