work in progress: survey
This commit is contained in:
parent
dada93479e
commit
0ec0cba1b9
8 changed files with 105 additions and 8 deletions
|
@ -208,7 +208,8 @@ Glossary items are topic-like concepts that may be edited by end users.
|
||||||
Survey
|
Survey
|
||||||
======
|
======
|
||||||
|
|
||||||
>>> from loops.knowledge.survey.base import Questionnaire
|
>>> from loops.knowledge.tests import importSurvey
|
||||||
|
>>> importSurvey(loopsRoot)
|
||||||
|
|
||||||
|
|
||||||
Fin de partie
|
Fin de partie
|
||||||
|
|
14
knowledge/data/survey_de.dmp
Normal file
14
knowledge/data/survey_de.dmp
Normal 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')
|
|
@ -23,11 +23,33 @@ Surveys used in knowledge management.
|
||||||
from zope.component import adapts
|
from zope.component import adapts
|
||||||
from zope.interface import implementer, implements
|
from zope.interface import implementer, implements
|
||||||
|
|
||||||
from cybertools.knowledge.survey.questionnaire import Questionnaire \
|
from cybertools.knowledge.survey.questionnaire import Questionnaire, Question,\
|
||||||
as BaseQuestionnaire
|
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)
|
||||||
|
|
||||||
|
|
|
@ -3,4 +3,16 @@
|
||||||
xmlns:browser="http://namespaces.zope.org/browser"
|
xmlns:browser="http://namespaces.zope.org/browser"
|
||||||
i18n_domain="loops">
|
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>
|
</configure>
|
||||||
|
|
|
@ -22,3 +22,38 @@ Interfaces for surveys used in knowledge management.
|
||||||
|
|
||||||
from zope.interface import Interface, Attribute
|
from zope.interface import Interface, Attribute
|
||||||
from zope import interface, component, schema
|
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.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
|
@ -2,16 +2,29 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import unittest, doctest
|
import unittest, doctest
|
||||||
from zope.testing.doctestunit import DocFileSuite
|
|
||||||
from zope.app.testing import ztapi
|
from zope.app.testing import ztapi
|
||||||
|
from zope import component
|
||||||
from zope.interface.verify import verifyClass
|
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.organize.party import Person
|
||||||
from loops.setup import importData as baseImportData
|
from loops.setup import importData as baseImportData
|
||||||
|
|
||||||
|
|
||||||
|
importPath = os.path.join(os.path.dirname(__file__), 'data')
|
||||||
|
|
||||||
|
|
||||||
def importData(loopsRoot):
|
def importData(loopsRoot):
|
||||||
importPath = os.path.join(os.path.dirname(__file__), 'data')
|
baseImportData(loopsRoot, importPath, 'knowledge_de.dmp')
|
||||||
baseImportData(loopsRoot, importPath, 'loops_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):
|
class Test(unittest.TestCase):
|
||||||
|
|
Loading…
Add table
Reference in a new issue