def getFieldsForGradingRecord(project, survey_group, record_entity=None): """Returns the fields for a GradingRecord. See GradingRecord model for description of the grade_decision value. Args: project: Project entity survey_group: a GradingSurveyGroup entity record_entity: an optional GradingRecord entity Returns: Dict containing the fields that should be set on a GradingRecord for this GradingSurveyGroup and StudentProject """ # retrieve the two Surveys, student_survey might be None grading_survey = survey_group.grading_survey student_survey = survey_group.student_survey # retrieve a GradingSurveyRecord q = GSoCGradingProjectSurveyRecord.all() q.filter('project', project) q.filter('survey', grading_survey) grading_survey_record = q.get() if student_survey: # retrieve ProjectSurveyRecord q = GSoCProjectSurveyRecord.all() q.filter('project', project) q.filter('survey', student_survey) project_survey_record = q.get() else: project_survey_record = None # set the required fields fields = { 'grading_survey_group': survey_group, 'mentor_record': grading_survey_record, 'student_record': project_survey_record } if not record_entity or not record_entity.locked: # find grading decision for new or unlocked records if not grading_survey_record: # no record found, return undecided grade_decision = 'undecided' elif not student_survey or project_survey_record: # if the grade is True then pass else fail grade_decision = 'pass' if grading_survey_record.grade else 'fail' else: # no ProjectSurveyRecord on file while there is a survey to be taken grade_decision = 'fail' fields['grade_decision'] = grade_decision # return the fields that should be set for a GradingRecord return fields
def getFieldsForGradingRecord(project, survey_group, record_entity=None): """Returns the fields for a GradingRecord. See GradingRecord model for description of the grade_decision value. Args: project: Project entity survey_group: a GradingSurveyGroup entity record_entity: an optional GradingRecord entity Returns: Dict containing the fields that should be set on a GradingRecord for this GradingSurveyGroup and StudentProject """ # retrieve the two Surveys, student_survey might be None grading_survey = survey_group.grading_survey student_survey = survey_group.student_survey # retrieve a GradingSurveyRecord q = GSoCGradingProjectSurveyRecord.all() q.filter('project', project) q.filter('survey', grading_survey) grading_survey_record = q.get() if student_survey: # retrieve ProjectSurveyRecord q = GSoCProjectSurveyRecord.all() q.filter('project', project) q.filter('survey', student_survey) project_survey_record = q.get() else: project_survey_record = None # set the required fields fields = {'grading_survey_group': survey_group, 'mentor_record': grading_survey_record, 'student_record': project_survey_record} if not record_entity or not record_entity.locked: # find grading decision for new or unlocked records if not grading_survey_record: # no record found, return undecided grade_decision = 'undecided' elif not student_survey or project_survey_record: # if the grade is True then pass else fail grade_decision = 'pass' if grading_survey_record.grade else 'fail' else: # no ProjectSurveyRecord on file while there is a survey to be taken grade_decision = 'fail' fields['grade_decision'] = grade_decision # return the fields that should be set for a GradingRecord return fields
def studentEvaluationRecordFromKwargs(self): """Sets the student evaluation record in RequestData object. """ assert access_checker.isSet(self.data.student_evaluation) assert access_checker.isSet(self.data.project) self.data.organization = self.data.project.org q = GSoCProjectSurveyRecord.all() q.filter('project', self.data.project) q.filter('survey', self.data.student_evaluation) self.data.student_evaluation_record = q.get()
def studentEvaluationRecordFromKwargs(self): """Sets the student evaluation record in RequestData object. """ assert access_checker.isSet(self.data.student_evaluation) # TODO(daniel): get rid of this ugly mutation! org_key = project_model.GSoCProject.org.get_value_for_datastore( self.data.url_project) self.data.organization = ndb.Key.from_old_key(org_key).get() q = GSoCProjectSurveyRecord.all() q.filter('project', self.data.url_project) q.filter('survey', self.data.student_evaluation) self.data.student_evaluation_record = q.get()