app/soc/views/models/grading_project_survey.py
changeset 2542 a9dec4763c6b
parent 2536 9f1b7aba026f
child 2564 81b36f56d61a
--- 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()