app/soc/views/models/grading_project_survey.py
changeset 2511 0e53ad183df9
parent 2478 985fd974e095
child 2512 2e8ccec037a9
equal deleted inserted replaced
2510:a85484d1f441 2511:0e53ad183df9
    16 
    16 
    17 """Views for GradingProjectSurveys.
    17 """Views for GradingProjectSurveys.
    18 """
    18 """
    19 
    19 
    20 __authors__ = [
    20 __authors__ = [
       
    21   '"James Levy" <jamesalexanderlevy@gmail.com>',
    21   '"Lennard de Rijk" <ljvderijk@gmail.com>',
    22   '"Lennard de Rijk" <ljvderijk@gmail.com>',
    22   ]
    23   ]
    23 
    24 
    24 
    25 
    25 from soc.logic import dicts
    26 from soc.logic import dicts
    47     rights['show'] = [('checkIsSurveyReadable', grading_survey_logic)]
    48     rights['show'] = [('checkIsSurveyReadable', grading_survey_logic)]
    48     rights['create'] = ['checkIsUser']
    49     rights['create'] = ['checkIsUser']
    49     rights['edit'] = [('checkIsSurveyWritable', grading_survey_logic)]
    50     rights['edit'] = [('checkIsSurveyWritable', grading_survey_logic)]
    50     rights['delete'] = [('checkIsSurveyWritable', grading_survey_logic)]
    51     rights['delete'] = [('checkIsSurveyWritable', grading_survey_logic)]
    51     rights['list'] = ['checkDocumentList']
    52     rights['list'] = ['checkDocumentList']
    52     rights['pick'] = ['checkDocumentPick']
    53     rights['take'] = ['checkIsDeveloper'] # TODO(ljvderijk) add Project check
    53 
    54 
    54     new_params = {}
    55     new_params = {}
    55     new_params['logic'] = grading_survey_logic
    56     new_params['logic'] = grading_survey_logic
    56     new_params['rights'] = rights
    57     new_params['rights'] = rights
    57 
    58 
    77     survey = Survey.get_by_key_name(survey_key_name)
    78     survey = Survey.get_by_key_name(survey_key_name)
    78     survey_logic.activateGrades(survey)
    79     survey_logic.activateGrades(survey)
    79     return
    80     return
    80 
    81 
    81 
    82 
       
    83   def _takeGet(self, request, template, context, params, entity, record,
       
    84               **kwargs):
       
    85     """Hook for the GET request for the Survey's take page.
       
    86 
       
    87     This method is called just before the GET page is shown.
       
    88 
       
    89     Args:
       
    90         template: the template used for this view
       
    91         entity: the Survey entity
       
    92         record: a SurveyRecord entity
       
    93         rest: see base.View.public()
       
    94     """
       
    95 
       
    96     gradeField = self.addGradeField(entity, record)
       
    97     field_count = len(eval(entity.survey_content.schema).items())
       
    98     context['survey_form'].fields.insert(field_count + 1, 'grade', gradeField)
       
    99 
       
   100     return super(View, self)._takeGet(request, template, context,
       
   101                                       params, entity, record, **kwargs)
       
   102 
       
   103 
       
   104   def addGradeField(self, survey, survey_record):
       
   105     """ adds a Grade Field to Survey.
       
   106     Used for mentor evaluations. 
       
   107 
       
   108     params:
       
   109       survey: the survey being taken
       
   110       survey_record: an existing survey record for a user-project-survey combo,
       
   111         or None
       
   112 
       
   113     """ 
       
   114     # Add a grade field determining if student passes or fails.
       
   115     # Activate grades handler should determine whether new status
       
   116     # is midterm_passed, final_passed, etc.
       
   117     grade_choices = (('pass', 'Pass'), ('fail', 'Fail'))
       
   118     grade_vals = { 'pass': True, 'fail': False }
       
   119     from django import forms
       
   120     gradeField = forms.fields.ChoiceField(choices=grade_choices,
       
   121                                            required=True,
       
   122                                            widget=forms.Select())
       
   123 
       
   124     gradeField.choices.insert(0, (None, "Choose a Grade")  )
       
   125     if survey_record:
       
   126       for g in grade_choices:
       
   127         if grade_vals[g[0]] == survey_record.grade:
       
   128           gradeField.choices.insert(0, (g[0],g[1] + " (Saved)")   )
       
   129           gradeField.choices.remove(g)
       
   130           break;
       
   131       gradeField.show_hidden_initial = True
       
   132 
       
   133     return gradeField
       
   134 
       
   135 
    82 view = View()
   136 view = View()
    83 
   137 
    84 admin = decorators.view(view.admin)
       
    85 create = decorators.view(view.create)
   138 create = decorators.view(view.create)
    86 edit = decorators.view(view.edit)
   139 edit = decorators.view(view.edit)
    87 delete = decorators.view(view.delete)
   140 delete = decorators.view(view.delete)
    88 list = decorators.view(view.list)
   141 list = decorators.view(view.list)
    89 public = decorators.view(view.public)
   142 public = decorators.view(view.public)
    90 export = decorators.view(view.export)
   143 take = decorators.view(view.take)
    91 pick = decorators.view(view.pick)
       
    92 results = decorators.view(view.viewResults)
       
    93 json = decorators.view(view.exportSerialized)