allow selection of question groups via personId

This commit is contained in:
Helmut Merz 2015-07-16 20:01:34 +02:00
parent 146b1c78aa
commit 8256a4efea
2 changed files with 16 additions and 12 deletions

View file

@ -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

View file

@ -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