diff -r 7ef468836f6e -r a9dec4763c6b app/soc/views/models/grading_project_survey.py --- a/app/soc/views/models/grading_project_survey.py Sat Jul 04 18:48:58 2009 +0100 +++ b/app/soc/views/models/grading_project_survey.py Sun Jul 05 00:57:03 2009 +0200 @@ -86,7 +86,7 @@ survey_logic.activateGrades(survey) return - def _getSurveyTakeForm(self, survey, record, params): + def _getSurveyTakeForm(self, survey, record, params, post_dict=None): """Returns the specific SurveyTakeForm needed for the take view. Args: @@ -100,8 +100,10 @@ grade_choices = (('pass', 'Pass'), ('fail', 'Fail')) survey_form = GradeSurveyTakeForm(survey_content=survey.survey_content, + survey_record=record, survey_logic=params['logic'], - grade_choices=grade_choices) + grade_choices=grade_choices, + data=post_dict) return survey_form @@ -155,9 +157,10 @@ if self.grade_choices: # add grade field to self.data, respecting the data kwarg if present - data = kwargs.pop('data', {}) - data['grade'] = None - kwargs['data'] = data + if kwargs.get('data') and kwargs['data'].get('grade'): + data = {} + data['grade'] = kwargs['data']['grade'] + self.data = data super(GradeSurveyTakeForm, self).__init__(*args, **kwargs) @@ -166,7 +169,6 @@ """ grade = self.cleaned_data['grade'] - # map to bool grade_vals = {'pass': True, 'fail': False, '': ''} @@ -193,14 +195,14 @@ if self.grade_choices: self.data['grade'] = vals_grade.get(grade, None) or grade - super(GradeSurveyTakeForm, self).getFields(post_dict) + return super(GradeSurveyTakeForm, self).getFields(post_dict) def insertFields(self): """Add ordered fields to self.fields, add grade field with grade choices. """ # add common survey fields - super(GradeSurveyTakeForm, self).insertFields() + fields = super(GradeSurveyTakeForm, self).insertFields() if self.grade_choices: # add empty option to choices @@ -208,11 +210,12 @@ gradeField = forms.fields.ChoiceField(choices=grade_choices, required=True, - widget=forms.Select()) + widget=forms.Select(), + initial=self.data.get('grade')) # add the grade field at the form's bottom - self.fields.insert(len(self.fields) + 1, 'grade', gradeField) + fields.insert(len(fields) + 1, 'grade', gradeField) - return self.fields + return fields view = View()