========================== Surveys and Questionnaires ========================== Let's first set up a questionaire. >>> from cybertools.knowledge.survey.questionnaire import Questionnaire, Question >>> quest = Questionnaire() >>> qu01 = Question(quest) >>> qu02 = Question(quest) >>> qu03 = Question(quest) >>> qu01.revertAnswerOptions = True Question-related Feedback Items =============================== We now assign result elements with the questions of this questionnaire. >>> from cybertools.knowledge.survey.questionnaire import FeedbackItem >>> fi01 = FeedbackItem('fi01') >>> fi02 = FeedbackItem('fi02') >>> fi03 = FeedbackItem('fi03') >>> qu01.feedbackItems = {fi01: 0.8, fi03: 0.2} >>> qu02.feedbackItems = {fi01: 0.3, fi02: 0.7, fi03: 0.1} >>> qu03.feedbackItems = {fi01: 0.2, fi03: 0.9} 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} Evaluation ========== Now let's calculate the result for resp01. >>> res = resp01.getResult() >>> for fi, score in res: ... print fi.text, score fi03 4.1 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 ---------------------- >>> from cybertools.knowledge.survey.questionnaire import QuestionGroup >>> qugroup = QuestionGroup(quest) >>> quest.questionGroups.append(qugroup) >>> qugroup.questions = [qu01, qu02, qu03] >>> qugroup.feedbackItems = [fi01, fi02, fi03] >>> res = resp01.getGroupedResult() >>> for r in res: ... print r['feedback'].text, round(r['score'], 2), r['rank'] fi02 0.58 1 >>> res = resp02.getGroupedResult() >>> for r in res: ... print r['feedback'].text, round(r['score'], 2), r['rank'] fi03 0.75 1 Team evaluation --------------- >>> resp03 = Response(quest, 'mary') >>> resp03.values = {qu01: 1, qu02: 2, qu03: 4} >>> resp01.values[qugroup] = resp01.getGroupedResult()[0]['score'] >>> resp03.values[qugroup] = resp03.getGroupedResult()[0]['score'] >>> teamData = resp01.getTeamResult(resp03.getGroupedResult(), ... [resp01, resp03]) >>> teamData [{'average': 0.6666...}]