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