work in progress: survey

This commit is contained in:
Helmut Merz 2013-02-09 15:57:31 +01:00
parent dada93479e
commit 0ec0cba1b9
8 changed files with 105 additions and 8 deletions

View file

@ -208,7 +208,8 @@ Glossary items are topic-like concepts that may be edited by end users.
Survey
======
>>> from loops.knowledge.survey.base import Questionnaire
>>> from loops.knowledge.tests import importSurvey
>>> importSurvey(loopsRoot)
Fin de partie

View file

@ -0,0 +1,14 @@
# survey types
type(u'questionnaire', u'Fragebogen', viewName=u'',
typeInterface=u'loops.knowledge.survey.interfaces.IQuestionnaire',
options=u'action.portlet:create_subtype,edit_concept')
type(u'question', u'Frage', viewName=u'',
typeInterface=u'loops.knowledge.survey.interfaces.IQuestion',
options=u'action.portlet:create_subtype,edit_concept')
type(u'resultelement', u'Feedback-Element', viewName=u'',
typeInterface=u'loops.knowledge.survey.interfaces.IResultElement',
options=u'action.portlet:edit_concept')
# subtypes
child(u'questionnaire', u'question', u'issubtype')
child(u'question', u'resultelement', u'issubtype')

View file

@ -23,11 +23,33 @@ Surveys used in knowledge management.
from zope.component import adapts
from zope.interface import implementer, implements
from cybertools.knowledge.survey.questionnaire import Questionnaire \
as BaseQuestionnaire
from cybertools.knowledge.survey.questionnaire import Questionnaire, Question,\
ResultElement
from loops.common import AdapterBase
from loops.knowledge.survey.interfaces import IQuestionnaire, IQuestion, IResultElement
from loops.type import TypeInterfaceSourceList
class Questionnaire(BaseQuestionnaire):
TypeInterfaceSourceList.typeInterfaces += (IQuestionnaire, IQuestion, IResultElement)
pass
class Questionnaire(AdapterBase, Questionnaire):
implements(IQuestionnaire)
_contextAttributes = list(IQuestionnaire)
class Question(AdapterBase, Question):
implements(IQuestion)
_contextAttributes = list(IQuestion)
class ResultElement(AdapterBase, ResultElement):
implements(IResultElement)
_contextAttributes = list(IResultElement)

View file

@ -3,4 +3,16 @@
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="loops">
<zope:adapter
factory="loops.knowledge.survey.base.Questionnaire"
provides="loops.knowledge.survey.interfaces.IQuestionnaire" />
<zope:adapter
factory="loops.knowledge.survey.base.Question"
provides="loops.knowledge.survey.interfaces.IQuestion" />
<zope:adapter
factory="loops.knowledge.survey.base.ResultElement"
provides="loops.knowledge.survey.interfaces.IResultElement" />
</configure>

View file

@ -22,3 +22,38 @@ Interfaces for surveys used in knowledge management.
from zope.interface import Interface, Attribute
from zope import interface, component, schema
from cybertools.knowledge.survey import interfaces
from loops.interfaces import IConceptSchema
class IQuestionnaire(IConceptSchema, interfaces.IQuestionnaire):
""" A collection of questions for setting up a survey.
"""
defaultOptions = Attribute('A sequence of answer options to select from. '
'Default value used for questions that do not '
'explicitly provide the values attribute.')
class IQuestion(IConceptSchema, interfaces.IQuestion):
""" A single question within a questionnaire.
"""
text = Attribute('The question asked.')
options = Attribute('A sequence of answer options to select from.')
class IResultElement(IConceptSchema, interfaces.IResultElement):
""" Some text (e.g. a recommendation) or some other kind of information
that may be deduced from the res)ponses to a questionnaire.
"""
text = Attribute('A text representing this result element.')
class IResponse(interfaces.IResponse):
""" A set of response values given to the questions of a questionnaire
by a single person or party.
"""

View file

@ -2,16 +2,29 @@
import os
import unittest, doctest
from zope.testing.doctestunit import DocFileSuite
from zope.app.testing import ztapi
from zope import component
from zope.interface.verify import verifyClass
from zope.testing.doctestunit import DocFileSuite
from loops.knowledge.survey.base import Questionnaire, Question, ResultElement
from loops.knowledge.survey.interfaces import IQuestionnaire, IQuestion, \
IResultElement
from loops.organize.party import Person
from loops.setup import importData as baseImportData
importPath = os.path.join(os.path.dirname(__file__), 'data')
def importData(loopsRoot):
importPath = os.path.join(os.path.dirname(__file__), 'data')
baseImportData(loopsRoot, importPath, 'loops_knowledge_de.dmp')
baseImportData(loopsRoot, importPath, 'knowledge_de.dmp')
def importSurvey(loopsRoot):
component.provideAdapter(Questionnaire, provides=IQuestionnaire)
component.provideAdapter(Question, provides=IQuestion)
component.provideAdapter(ResultElement, provides=IResultElement)
baseImportData(loopsRoot, importPath, 'survey_de.dmp')
class Test(unittest.TestCase):