Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
  def mentorEvaluationRecordFromKwargs(self):
    """Sets the mentor evaluation record in RequestData object.
    """
    assert access_checker.isSet(self.data.mentor_evaluation)
    assert access_checker.isSet(self.data.project)

    self.data.organization = self.data.project.org

    q = GSoCGradingProjectSurveyRecord.all()
    q.filter('project', self.data.project)
    q.filter('survey', self.data.mentor_evaluation)
    self.data.mentor_evaluation_record = q.get()
Ejemplo n.º 4
0
  def mentorEvaluationRecordFromKwargs(self):
    """Sets the mentor evaluation record in RequestData object.
    """
    assert access_checker.isSet(self.data.mentor_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._url_ndb_org = ndb.Key.from_old_key(org_key).get()

    q = GSoCGradingProjectSurveyRecord.all()
    q.filter('project', self.data.url_project)
    q.filter('survey', self.data.mentor_evaluation)
    self.data.mentor_evaluation_record = q.get()
Ejemplo n.º 5
0
    def mentorEvaluationRecordFromKwargs(self):
        """Sets the mentor evaluation record in RequestData object.
    """
        assert access_checker.isSet(self.data.mentor_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._url_ndb_org = ndb.Key.from_old_key(org_key).get()

        q = GSoCGradingProjectSurveyRecord.all()
        q.filter('project', self.data.url_project)
        q.filter('survey', self.data.mentor_evaluation)
        self.data.mentor_evaluation_record = q.get()