From 38d74bcb2124be71a90e0837ecd8e1208bebd7d9 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 21 Apr 2015 20:27:30 +0200 Subject: [PATCH] provide column for standard deviation on single question report - but keep inactive at the moment --- knowledge/survey/browser.py | 5 +++++ knowledge/survey/view_macros.pt | 5 +++++ locales/de/LC_MESSAGES/loops.mo | Bin 27548 -> 27585 bytes locales/de/LC_MESSAGES/loops.po | 3 +++ 4 files changed, 13 insertions(+) diff --git a/knowledge/survey/browser.py b/knowledge/survey/browser.py index ec580e6..03adf71 100644 --- a/knowledge/survey/browser.py +++ b/knowledge/survey/browser.py @@ -23,6 +23,7 @@ surveys and self-assessments. import csv from cStringIO import StringIO +import math from zope.app.pagetemplate import ViewPageTemplateFile from zope.cachedescriptors.property import Lazy from zope.i18n import translate @@ -269,8 +270,12 @@ class SurveyView(InstitutionMixin, ConceptView): average = float(sum(values)) / len(values) if question.revertAnswerOptions: average = question.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) result['average'] = int(round(average)) + result['stddev'] = int(round(stddev)) texts = [r.texts.get(question) for r in self.teamData] result['texts'] = '
'.join([unicode(t) for t in texts if t]) return result diff --git a/knowledge/survey/view_macros.pt b/knowledge/survey/view_macros.pt index 1ae3702..3565e33 100644 --- a/knowledge/survey/view_macros.pt +++ b/knowledge/survey/view_macros.pt @@ -178,10 +178,12 @@     + Average + + diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index 1e9869ae698151828c41f823f3f42902345f7a44..755a2ce9605ddbf6a4f8d32145db66e9d1bd9197 100644 GIT binary patch delta 9749 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 rqO1&d!)B