allow selection of question groups via personId
This commit is contained in:
		
							parent
							
								
									146b1c78aa
								
							
						
					
					
						commit
						8256a4efea
					
				
					 2 changed files with 16 additions and 12 deletions
				
			
		|  | @ -48,7 +48,7 @@ class Questionnaire(AdapterBase, Questionnaire): | ||||||
|     def questionGroups(self): |     def questionGroups(self): | ||||||
|         return self.getQuestionGroups() |         return self.getQuestionGroups() | ||||||
| 
 | 
 | ||||||
|     def getQuestionGroups(self): |     def getQuestionGroups(self, personId=None): | ||||||
|         return [adapted(c) for c in self.context.getChildren()] |         return [adapted(c) for c in self.context.getChildren()] | ||||||
| 
 | 
 | ||||||
|     @property |     @property | ||||||
|  |  | ||||||
|  | @ -62,9 +62,8 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|     @Lazy |     @Lazy | ||||||
|     def title(self): |     def title(self): | ||||||
|         title = self.context.title |         title = self.context.title | ||||||
|         personId = self.request.form.get('person') |         if self.personId: | ||||||
|         if personId: |             person = adapted(getObjectForUid(self.personId)) | ||||||
|             person = adapted(getObjectForUid(personId)) |  | ||||||
|             if person is not None: |             if person is not None: | ||||||
|                 return '%s: %s' % (title, person.title) |                 return '%s: %s' % (title, person.title) | ||||||
|         return title |         return title | ||||||
|  | @ -80,6 +79,10 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|             return '' |             return '' | ||||||
|         return qs |         return qs | ||||||
| 
 | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def personId(self): | ||||||
|  |         return self.request.form.get('person') | ||||||
|  | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def report(self): |     def report(self): | ||||||
|         return self.request.form.get('report') |         return self.request.form.get('report') | ||||||
|  | @ -104,7 +107,8 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|     def groups(self): |     def groups(self): | ||||||
|         result = [] |         result = [] | ||||||
|         if self.questionnaireType == 'pref_selection': |         if self.questionnaireType == 'pref_selection': | ||||||
|             groups = [g.questions for g in self.adapted.questionGroups] |             groups = [g.questions for g in  | ||||||
|  |                 self.adapted.getQuestionGroups(self.personId)] | ||||||
|             questions = [] |             questions = [] | ||||||
|             for idxg, g in enumerate(groups): |             for idxg, g in enumerate(groups): | ||||||
|                 qus = [] |                 qus = [] | ||||||
|  | @ -126,7 +130,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|                 result.append(dict(title=u'Question', infoText=None,  |                 result.append(dict(title=u'Question', infoText=None,  | ||||||
|                                    questions=questions[idx:idx+bs])) |                                    questions=questions[idx:idx+bs])) | ||||||
|         else: |         else: | ||||||
|             for group in self.adapted.questionGroups: |             for group in self.adapted.getQuestionGroups(self.personId): | ||||||
|                 result.append(dict(title=group.title,  |                 result.append(dict(title=group.title,  | ||||||
|                                    infoText=self.getInfoText(group), |                                    infoText=self.getInfoText(group), | ||||||
|                                    questions=group.questions)) |                                    questions=group.questions)) | ||||||
|  | @ -185,7 +189,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|                 uid = self.getUidForObject(c) |                 uid = self.getUidForObject(c) | ||||||
|                 data = respManager.load(uid, instUid) |                 data = respManager.load(uid, instUid) | ||||||
|                 if data: |                 if data: | ||||||
|                     resp = Response(self.adapted, None) |                     resp = Response(self.adapted, self.personId) | ||||||
|                     for qu in self.adapted.questions: |                     for qu in self.adapted.questions: | ||||||
|                         if qu.questionType in (None, 'value_selection'): |                         if qu.questionType in (None, 'value_selection'): | ||||||
|                             if qu.uid in data: |                             if qu.uid in data: | ||||||
|  | @ -195,7 +199,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|                         else: |                         else: | ||||||
|                             resp.texts[qu] = data.get(qu.uid) or u'' |                             resp.texts[qu] = data.get(qu.uid) or u'' | ||||||
|                     qgAvailable = True |                     qgAvailable = True | ||||||
|                     for qg in self.adapted.questionGroups: |                     for qg in self.adapted.getQuestionGroups(self.personId): | ||||||
|                         if qg.uid in data: |                         if qg.uid in data: | ||||||
|                             resp.values[qg] = data[qg.uid] |                             resp.values[qg] = data[qg.uid] | ||||||
|                         else: |                         else: | ||||||
|  | @ -227,7 +231,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|         if self.adapted.questionnaireType == 'pref_selection': |         if self.adapted.questionnaireType == 'pref_selection': | ||||||
|             return self.prefsResults(respManager, form, action) |             return self.prefsResults(respManager, form, action) | ||||||
|         data = {} |         data = {} | ||||||
|         response = Response(self.adapted, None) |         response = Response(self.adapted, self.personId) | ||||||
|         for key, value in form.items(): |         for key, value in form.items(): | ||||||
|             if key.startswith('question_'): |             if key.startswith('question_'): | ||||||
|                 if value != 'none': |                 if value != 'none': | ||||||
|  | @ -265,7 +269,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|         respManager = Responses(self.context) |         respManager = Responses(self.context) | ||||||
|         self.teamData = self.getTeamData(respManager) |         self.teamData = self.getTeamData(respManager) | ||||||
|         response = Response(self.adapted, None) |         response = Response(self.adapted, None) | ||||||
|         groups = self.adapted.questionGroups |         groups = self.adapted.getQuestionGroups(self.pesonId) | ||||||
|         teamValues = response.getTeamResult(groups, self.teamData) |         teamValues = response.getTeamResult(groups, self.teamData) | ||||||
|         for idx, r in enumerate(teamValues): |         for idx, r in enumerate(teamValues): | ||||||
|             group = r['group'] |             group = r['group'] | ||||||
|  | @ -314,7 +318,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|         #self.errors = self.check(response) |         #self.errors = self.check(response) | ||||||
|         if self.errors: |         if self.errors: | ||||||
|             return [] |             return [] | ||||||
|         for group in self.adapted.questionGroups: |         for group in self.adapted.getQuestionGroups(self.personId): | ||||||
|             score = 0 |             score = 0 | ||||||
|             for qu in group.questions: |             for qu in group.questions: | ||||||
|                 value = data.get(qu.uid) or 0 |                 value = data.get(qu.uid) or 0 | ||||||
|  | @ -333,7 +337,7 @@ class SurveyView(InstitutionMixin, ConceptView): | ||||||
|                     text='Please answer the obligatory questions.')) |                     text='Please answer the obligatory questions.')) | ||||||
|                 break |                 break | ||||||
|         qugroups = {} |         qugroups = {} | ||||||
|         for qugroup in self.adapted.questionGroups: |         for qugroup in self.adapted.getQuestionGroups(self.personId): | ||||||
|             qugroups[qugroup] = 0 |             qugroups[qugroup] = 0 | ||||||
|         for qu in values: |         for qu in values: | ||||||
|             qugroups[qu.questionGroup] += 1 |             qugroups[qu.questionGroup] += 1 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue