84 survey_key_name = survey_logic.getKeyNameFromPath(request.path) |
84 survey_key_name = survey_logic.getKeyNameFromPath(request.path) |
85 survey = Survey.get_by_key_name(survey_key_name) |
85 survey = Survey.get_by_key_name(survey_key_name) |
86 survey_logic.activateGrades(survey) |
86 survey_logic.activateGrades(survey) |
87 return |
87 return |
88 |
88 |
89 def _getSurveyTakeForm(self, survey, record, params): |
89 def _getSurveyTakeForm(self, survey, record, params, post_dict=None): |
90 """Returns the specific SurveyTakeForm needed for the take view. |
90 """Returns the specific SurveyTakeForm needed for the take view. |
91 |
91 |
92 Args: |
92 Args: |
93 survey: a Survey entity |
93 survey: a Survey entity |
94 record: a SurveyRecord instance if any exist |
94 record: a SurveyRecord instance if any exist |
98 An instance of GradseSurveyTakeForm. |
98 An instance of GradseSurveyTakeForm. |
99 """ |
99 """ |
100 |
100 |
101 grade_choices = (('pass', 'Pass'), ('fail', 'Fail')) |
101 grade_choices = (('pass', 'Pass'), ('fail', 'Fail')) |
102 survey_form = GradeSurveyTakeForm(survey_content=survey.survey_content, |
102 survey_form = GradeSurveyTakeForm(survey_content=survey.survey_content, |
|
103 survey_record=record, |
103 survey_logic=params['logic'], |
104 survey_logic=params['logic'], |
104 grade_choices=grade_choices) |
105 grade_choices=grade_choices, |
|
106 data=post_dict) |
105 |
107 |
106 return survey_form |
108 return survey_form |
107 |
109 |
108 def _constructFilterForProjectSelection(self, survey, params): |
110 def _constructFilterForProjectSelection(self, survey, params): |
109 """Returns the filter needed for the Project selection view. |
111 """Returns the filter needed for the Project selection view. |
153 |
155 |
154 self.grade_choices = kwargs.pop('grade_choices', None) |
156 self.grade_choices = kwargs.pop('grade_choices', None) |
155 |
157 |
156 if self.grade_choices: |
158 if self.grade_choices: |
157 # add grade field to self.data, respecting the data kwarg if present |
159 # add grade field to self.data, respecting the data kwarg if present |
158 data = kwargs.pop('data', {}) |
160 if kwargs.get('data') and kwargs['data'].get('grade'): |
159 data['grade'] = None |
161 data = {} |
160 kwargs['data'] = data |
162 data['grade'] = kwargs['data']['grade'] |
|
163 self.data = data |
161 |
164 |
162 super(GradeSurveyTakeForm, self).__init__(*args, **kwargs) |
165 super(GradeSurveyTakeForm, self).__init__(*args, **kwargs) |
163 |
166 |
164 def clean_grade(self): |
167 def clean_grade(self): |
165 """Validate the grade field. |
168 """Validate the grade field. |
166 """ |
169 """ |
167 |
170 |
168 grade = self.cleaned_data['grade'] |
171 grade = self.cleaned_data['grade'] |
169 |
|
170 # map to bool |
172 # map to bool |
171 grade_vals = {'pass': True, 'fail': False, '': ''} |
173 grade_vals = {'pass': True, 'fail': False, '': ''} |
172 |
174 |
173 return grade_vals.get(grade, None) |
175 return grade_vals.get(grade, None) |
174 |
176 |
191 vals_grade = {True: 'pass', False: 'fail'} |
193 vals_grade = {True: 'pass', False: 'fail'} |
192 |
194 |
193 if self.grade_choices: |
195 if self.grade_choices: |
194 self.data['grade'] = vals_grade.get(grade, None) or grade |
196 self.data['grade'] = vals_grade.get(grade, None) or grade |
195 |
197 |
196 super(GradeSurveyTakeForm, self).getFields(post_dict) |
198 return super(GradeSurveyTakeForm, self).getFields(post_dict) |
197 |
199 |
198 def insertFields(self): |
200 def insertFields(self): |
199 """Add ordered fields to self.fields, add grade field with grade choices. |
201 """Add ordered fields to self.fields, add grade field with grade choices. |
200 """ |
202 """ |
201 |
203 |
202 # add common survey fields |
204 # add common survey fields |
203 super(GradeSurveyTakeForm, self).insertFields() |
205 fields = super(GradeSurveyTakeForm, self).insertFields() |
204 |
206 |
205 if self.grade_choices: |
207 if self.grade_choices: |
206 # add empty option to choices |
208 # add empty option to choices |
207 grade_choices = (('', "Choose a Grade"),) + tuple(self.grade_choices) |
209 grade_choices = (('', "Choose a Grade"),) + tuple(self.grade_choices) |
208 |
210 |
209 gradeField = forms.fields.ChoiceField(choices=grade_choices, |
211 gradeField = forms.fields.ChoiceField(choices=grade_choices, |
210 required=True, |
212 required=True, |
211 widget=forms.Select()) |
213 widget=forms.Select(), |
|
214 initial=self.data.get('grade')) |
212 # add the grade field at the form's bottom |
215 # add the grade field at the form's bottom |
213 self.fields.insert(len(self.fields) + 1, 'grade', gradeField) |
216 fields.insert(len(fields) + 1, 'grade', gradeField) |
214 |
217 |
215 return self.fields |
218 return fields |
216 |
219 |
217 |
220 |
218 view = View() |
221 view = View() |
219 |
222 |
220 create = decorators.view(view.create) |
223 create = decorators.view(view.create) |