diff --git a/knowledge/data/survey_de.dmp b/knowledge/data/survey_de.dmp index 6f0dfec..297738d 100644 --- a/knowledge/data/survey_de.dmp +++ b/knowledge/data/survey_de.dmp @@ -11,4 +11,8 @@ type(u'resultelement', u'Feedback-Element', viewName=u'', # subtypes child(u'questionnaire', u'question', u'issubtype') +child(u'questionnaire', u'questionnaire', u'issubtype') child(u'question', u'resultelement', u'issubtype') + +# records +records(u'survey_responses', u'loops.knowledge.survey.response.Response') diff --git a/knowledge/survey/interfaces.py b/knowledge/survey/interfaces.py index 94bc8fc..5061ffc 100644 --- a/knowledge/survey/interfaces.py +++ b/knowledge/survey/interfaces.py @@ -31,7 +31,7 @@ class IQuestionnaire(IConceptSchema, interfaces.IQuestionnaire): """ A collection of questions for setting up a survey. """ - defaultOptions = Attribute('A sequence of answer options to select from. ' + defaultAnswerOptions = Attribute('A sequence of answer options to select from. ' 'Default value used for questions that do not ' 'explicitly provide the values attribute.') @@ -41,7 +41,7 @@ class IQuestion(IConceptSchema, interfaces.IQuestion): """ text = Attribute('The question asked.') - options = Attribute('A sequence of answer options to select from.') + answerOptions = Attribute('A sequence of answer options to select from.') class IResultElement(IConceptSchema, interfaces.IResultElement): @@ -57,3 +57,8 @@ class IResponse(interfaces.IResponse): by a single person or party. """ + +class IResponses(Interface): + """ A container of manager of survey responses. + """ + diff --git a/knowledge/survey/response.py b/knowledge/survey/response.py new file mode 100644 index 0000000..f2f1733 --- /dev/null +++ b/knowledge/survey/response.py @@ -0,0 +1,48 @@ +# +# Copyright (c) 2013 Helmut Merz helmutm@cy55.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +""" +Handling survey responses. +""" + +from zope.component import adapts +from zope.interface import implements + +from cybertools.tracking.btree import Track +from cybertools.tracking.interfaces import ITrackingStorage +from loops.knowledge.survey.interfaces import IResponse, IResponses +from loops.organize.tracking.base import BaseRecordManager + + +class Response(Track): + """ A survey response. + """ + + implements(IResponse) + + typeName = 'Response' + typeInterface = IResponse + + +class Responses(BaseRecordManager): + """ A tracking storage adapter for survey responses. + """ + + implements(IResponses) + adapts(ITrackingStorage) +