From 13d48b6ab055e4a35cafe4c17eb5f20af44ea7c9 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Mon, 18 Mar 2013 09:57:46 +0100 Subject: [PATCH] allow for unanswered questions --- knowledge/survey/README.txt | 17 ++++++++++++++++- knowledge/survey/questionnaire.py | 4 +++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/knowledge/survey/README.txt b/knowledge/survey/README.txt index 86a5141..9315131 100644 --- a/knowledge/survey/README.txt +++ b/knowledge/survey/README.txt @@ -33,9 +33,13 @@ Responses >>> from cybertools.knowledge.survey.questionnaire import Response >>> resp01 = Response(quest, 'john') - >>> resp01.values = {qu01: 2, qu02: 1, qu03: 4} +It's possible to leave some of the questions unanswered. + + >>> resp02 = Response(quest, 'john') + >>> resp02.values = {qu01: 2, qu03: 4} + Now let's calculate the result for resp01. >>> res = resp01.getResult() @@ -45,6 +49,11 @@ Now let's calculate the result for resp01. fi01 2.7 fi02 0.7 + >>> res = resp02.getResult() + >>> for fi, score in res: + ... print fi.text, score + fi03 4.0 + fi01 2.4 Grouped Feedback Items ====================== @@ -59,3 +68,9 @@ Grouped Feedback Items >>> for qugroup, fi, score in res: ... print fi.text, round(score, 2) fi02 0.58 + + >>> res = resp02.getGroupedResult() + >>> for qugroup, fi, score in res: + ... print fi.text, round(score, 2) + fi03 0.75 + diff --git a/knowledge/survey/questionnaire.py b/knowledge/survey/questionnaire.py index b7c5844..b73e9e6 100644 --- a/knowledge/survey/questionnaire.py +++ b/knowledge/survey/questionnaire.py @@ -97,7 +97,9 @@ class Response(object): for qugroup in self.questionnaire.questionGroups: score = scoreMax = 0.0 for qu in qugroup.questions: - value = self.values.get(qu, 0.0) + value = self.values.get(qu) + if value is None: + continue if qu.revertAnswerOptions: value = qu.answerRange - value - 1 score += value