From acc104cf95741613c743d9a391e16d9995c3e63b Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 5 Jun 2015 13:54:35 +0200 Subject: [PATCH] directly reference questionnaire as question may be assigned to more than one questionnaire --- knowledge/survey/browser.py | 9 +++++---- knowledge/survey/view_macros.pt | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/knowledge/survey/browser.py b/knowledge/survey/browser.py index f1bf303..48a341f 100644 --- a/knowledge/survey/browser.py +++ b/knowledge/survey/browser.py @@ -278,21 +278,22 @@ class SurveyView(InstitutionMixin, ConceptView): result.append(item) return result - def getTeamResultsForQuestion(self, question): + def getTeamResultsForQuestion(self, question, questionnaire): result = dict(average=0.0, stddev=0.0) if self.teamData is None: respManager = Responses(self.context) self.teamData = self.getTeamData(respManager) + answerRange = question.answerRange or questionnaire.defaultAnswerRange values = [r.values.get(question) for r in self.teamData] values = [v for v in values if v is not None] if values: average = float(sum(values)) / len(values) if question.revertAnswerOptions: - average = question.answerRange - average - 1 + average = answerRange - average - 1 devs = [(average - v) for v in values] stddev = math.sqrt(sum(d * d for d in devs) / len(values)) - average = average * 100 / (question.answerRange - 1) - stddev = stddev * 100 / (question.answerRange - 1) + average = average * 100 / (answerRange - 1) + stddev = stddev * 100 / (answerRange - 1) result['average'] = int(round(average)) result['stddev'] = int(round(stddev)) texts = [r.texts.get(question) for r in self.teamData] diff --git a/knowledge/survey/view_macros.pt b/knowledge/survey/view_macros.pt index 3a0ac0c..da349cb 100644 --- a/knowledge/survey/view_macros.pt +++ b/knowledge/survey/view_macros.pt @@ -243,7 +243,8 @@ + data python: + item.getTeamResultsForQuestion(question, item.adapted)">