diff --git a/knowledge/survey/browser.py b/knowledge/survey/browser.py
index 657c3e9..30c7cdd 100644
--- a/knowledge/survey/browser.py
+++ b/knowledge/survey/browser.py
@@ -52,9 +52,10 @@ class SurveyView(ConceptView):
if key.startswith('question_'):
uid = key[len('question_'):]
question = adapted(self.getObjectForUid(uid))
- value = int(value)
- self.data[uid] = value
- response.values[question] = value
+ if value != 'none':
+ value = int(value)
+ self.data[uid] = value
+ response.values[question] = value
# TODO: store self.data in track
# else:
# get response from track
@@ -65,9 +66,10 @@ class SurveyView(ConceptView):
for r in result]
def getValues(self, question):
- setting = 0
+ setting = None
if self.data is not None:
- setting = self.data.get(question.uid) or 0
- return [dict(value=i, checked=(i == setting))
- for i in range(question.answerRange)]
+ setting = self.data.get(question.uid)
+ noAnswer = [dict(value='none', checked=(setting == None))]
+ return noAnswer + [dict(value=i, checked=(setting == i))
+ for i in reversed(range(question.answerRange))]
diff --git a/knowledge/survey/interfaces.py b/knowledge/survey/interfaces.py
index ea15928..1e23003 100644
--- a/knowledge/survey/interfaces.py
+++ b/knowledge/survey/interfaces.py
@@ -43,11 +43,24 @@ class IQuestionGroup(IConceptSchema, interfaces.IQuestionGroup):
""" A group of questions within a questionnaire.
"""
+ minAnswers = schema.Int(
+ title=_(u'Minimum Number of Answers'),
+ description=_(u'Minumum number of questions that have to be answered. '
+ 'Empty means all questions have to be answered.'),
+ default=4,
+ required=False)
+
class IQuestion(IConceptSchema, interfaces.IQuestion):
""" A single question within a questionnaire.
"""
+ required = schema.Bool(
+ title=_(u'Required'),
+ description=_(u'Question must be answered.'),
+ default=False,
+ required=False)
+
revertAnswerOptions = schema.Bool(
title=_(u'Negative'),
description=_(u'Value inversion: High selection means low value.'),
diff --git a/knowledge/survey/view_macros.pt b/knowledge/survey/view_macros.pt
index 3956120..d225219 100644
--- a/knowledge/survey/view_macros.pt
+++ b/knowledge/survey/view_macros.pt
@@ -7,7 +7,7 @@
Category | Response | @@ -23,33 +23,32 @@
---|