def create(self, subsection, read_only=False, force_calculate=False): """ Returns the SubsectionGrade object for the student and subsection. If read_only is True, doesn't save any updates to the grades. force_calculate - If true, will cause this function to return a `CreateSubsectionGrade` object if no cached grade currently exists, even if the assume_zero_if_absent flag is enabled for the course. """ 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) and not force_calculate: subsection_grade = ZeroSubsectionGrade(subsection, self.course_data) else: subsection_grade = CreateSubsectionGrade( subsection, 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.update_or_create_model(self.student) self._update_saved_subsection_grade(subsection.location, grade_model) return subsection_grade
def create(self, subsection, read_only=False): """ Returns the SubsectionGrade object for the student and subsection. If read_only is True, doesn't save any updates to the grades. """ 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 = CreateSubsectionGrade( subsection, 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.update_or_create_model( self.student) self._update_saved_subsection_grade( subsection.location, grade_model) return subsection_grade
def create(self, subsection, read_only=False): """ Returns the SubsectionGrade object for the student and subsection. If read_only is True, doesn't save any updates to the grades. """ 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