reorganize knowledge package: put qualification (qualification and competence manager) in sub-package; create sub-package for surveys
This commit is contained in:
parent
6aab28a004
commit
3cc9cffd22
15 changed files with 315 additions and 80 deletions
|
@ -171,9 +171,9 @@ Competence and Certification Management
|
|||
=======================================
|
||||
|
||||
>>> from cybertools.stateful.interfaces import IStatesDefinition
|
||||
>>> from loops.knowledge.qualification import qualificationStates
|
||||
>>> from loops.knowledge.interfaces import IQualificationRecords
|
||||
>>> from loops.knowledge.qualification import QualificationRecords
|
||||
>>> from loops.knowledge.qualification.base import qualificationStates
|
||||
>>> from loops.knowledge.qualification.interfaces import IQualificationRecords
|
||||
>>> from loops.knowledge.qualification.base import QualificationRecords
|
||||
>>> component.provideUtility(qualificationStates,
|
||||
... provides=IStatesDefinition,
|
||||
... name='knowledge.qualification')
|
||||
|
@ -190,8 +190,8 @@ We first create a training that provides knowledge in Python specials.
|
|||
|
||||
Then we record the need for John to acquire this knowledge.
|
||||
|
||||
>>> from loops.knowledge.browser import CreateQualificationRecordForm
|
||||
>>> from loops.knowledge.browser import CreateQualificationRecord
|
||||
>>> from loops.knowledge.qualification.browser import CreateQualificationRecordForm
|
||||
>>> from loops.knowledge.qualification.browser import CreateQualificationRecord
|
||||
|
||||
|
||||
Glossaries
|
||||
|
@ -205,6 +205,12 @@ Glossary items are topic-like concepts that may be edited by end users.
|
|||
>>> from loops.knowledge.glossary.browser import EditGlossaryItem
|
||||
|
||||
|
||||
Survey
|
||||
======
|
||||
|
||||
>>> from loops.knowledge.survey.base import Questionnaire
|
||||
|
||||
|
||||
Fin de partie
|
||||
=============
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de
|
||||
# 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
|
||||
|
@ -30,10 +30,7 @@ from cybertools.typology.interfaces import IType
|
|||
from loops.browser.action import DialogAction
|
||||
from loops.browser.common import BaseView
|
||||
from loops.browser.concept import ConceptView
|
||||
from loops.expert.browser.report import ResultsConceptView
|
||||
from loops.knowledge.interfaces import IPerson, ITask
|
||||
from loops.knowledge.qualification import QualificationRecord
|
||||
from loops.organize.work.browser import CreateWorkItemForm, CreateWorkItem
|
||||
from loops.organize.party import getPersonForUser
|
||||
from loops.util import _
|
||||
|
||||
|
@ -114,25 +111,3 @@ class Candidates(ConceptView):
|
|||
return self.template.macros['requirement_candidates']
|
||||
|
||||
|
||||
# qualification stuff
|
||||
|
||||
class PersonQualificationView(ResultsConceptView):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class CreateQualificationRecordForm(CreateWorkItemForm):
|
||||
|
||||
macros = knowledge_macros
|
||||
recordManagerName = 'qualification'
|
||||
trackFactory = QualificationRecord
|
||||
|
||||
@Lazy
|
||||
def macro(self):
|
||||
return self.macros['create_qualification']
|
||||
|
||||
|
||||
class CreateQualificationRecord(CreateWorkItem):
|
||||
|
||||
pass
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
<!-- $Id$ -->
|
||||
|
||||
<configure
|
||||
xmlns:zope="http://namespaces.zope.org/zope"
|
||||
xmlns:browser="http://namespaces.zope.org/browser"
|
||||
|
@ -66,22 +64,6 @@
|
|||
interface="cybertools.knowledge.interfaces.IKnowledgeProvider" />
|
||||
</zope:class>
|
||||
|
||||
<!-- records -->
|
||||
|
||||
<zope:class class="loops.knowledge.qualification.QualificationRecord">
|
||||
<require permission="zope.View"
|
||||
interface="loops.knowledge.interfaces.IQualificationRecord" />
|
||||
<require permission="zope.ManageContent"
|
||||
set_schema="loops.knowledge.interfaces.IQualificationRecord" />
|
||||
</zope:class>
|
||||
|
||||
<zope:adapter factory="loops.knowledge.qualification.QualificationRecords"
|
||||
provides="loops.knowledge.interfaces.IQualificationRecords" />
|
||||
|
||||
<zope:utility factory="loops.knowledge.qualification.qualificationStates"
|
||||
provides="cybertools.stateful.interfaces.IStatesDefinition"
|
||||
name="knowledge.qualification" />
|
||||
|
||||
<!-- views -->
|
||||
|
||||
<zope:adapter
|
||||
|
@ -100,19 +82,6 @@
|
|||
factory="loops.knowledge.browser.Candidates"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:page
|
||||
name="create_qualification.html"
|
||||
for="loops.interfaces.INode"
|
||||
class="loops.knowledge.browser.CreateQualificationRecordForm"
|
||||
permission="zope.View" />
|
||||
|
||||
<zope:adapter
|
||||
name="create_qualification"
|
||||
for="loops.browser.node.NodeView
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
factory="loops.knowledge.browser.CreateQualificationRecord"
|
||||
permission="zope.View" />
|
||||
|
||||
<!-- other adapters -->
|
||||
|
||||
<zope:adapter factory="loops.knowledge.schema.PersonSchemaFactory" />
|
||||
|
@ -120,5 +89,7 @@
|
|||
<!-- sub-packages -->
|
||||
|
||||
<include package=".glossary" />
|
||||
<include package=".qualification" />
|
||||
<include package=".survey" />
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -41,4 +41,4 @@ child(u'system', u'issubtype', u'standard')
|
|||
child(u'competence', u'training', u'issubtype', usePredicate=u'provides')
|
||||
|
||||
# records
|
||||
records(u'qualification', u'loops.knowledge.qualification.QualificationRecord')
|
||||
records(u'qualification', u'loops.knowledge.qualification.base.QualificationRecord')
|
||||
|
|
|
@ -41,4 +41,4 @@ child(u'system', u'issubtype', u'standard')
|
|||
child(u'competence', u'training', u'issubtype', usePredicate=u'provides')
|
||||
|
||||
# records
|
||||
records(u'qualification', u'loops.knowledge.qualification.QualificationRecord')
|
||||
records(u'qualification', u'loops.knowledge.qualification.base.QualificationRecord')
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de
|
||||
# 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
|
||||
|
@ -22,18 +22,14 @@ Interfaces for knowledge management and elearning with loops.
|
|||
|
||||
from zope.interface import Interface, Attribute
|
||||
from zope import interface, component, schema
|
||||
from zope.i18nmessageid import MessageFactory
|
||||
from zope.security.proxy import removeSecurityProxy
|
||||
|
||||
from cybertools.knowledge.interfaces import IKnowing, IRequirementProfile
|
||||
from cybertools.knowledge.interfaces import IKnowledgeElement
|
||||
from cybertools.organize.interfaces import IWorkItem, IWorkItems
|
||||
from loops.interfaces import IConceptSchema, ILoopsAdapter
|
||||
from loops.organize.interfaces import IPerson as IBasePerson
|
||||
from loops.organize.interfaces import ITask as IBaseTask
|
||||
from loops.schema.base import Relation, RelationSet
|
||||
|
||||
_ = MessageFactory('loops')
|
||||
from loops.util import _
|
||||
|
||||
|
||||
class IPerson(IBasePerson, IKnowing):
|
||||
|
@ -62,13 +58,3 @@ class ITopic(IConceptSchema, IKnowledgeElement, ILoopsAdapter):
|
|||
""" Just a topic, some general classification concept.
|
||||
"""
|
||||
|
||||
|
||||
class IQualificationRecord(IWorkItem):
|
||||
""" Records needs for qualification (acqusition of competence)
|
||||
and corresponding participations in training events etc.
|
||||
"""
|
||||
|
||||
|
||||
class IQualificationRecords(IWorkItems):
|
||||
""" Container for qualification records.
|
||||
"""
|
||||
|
|
1
knowledge/qualification/__init__.py
Normal file
1
knowledge/qualification/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
'''package loops.knowledge.qualification'''
|
103
knowledge/qualification/base.py
Normal file
103
knowledge/qualification/base.py
Normal file
|
@ -0,0 +1,103 @@
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
"""
|
||||
Controlling qualification activities of persons.
|
||||
|
||||
Central part of CCM competence and certification management framework.
|
||||
"""
|
||||
|
||||
from zope.component import adapts
|
||||
from zope.interface import implementer, implements
|
||||
|
||||
from cybertools.stateful.base import Stateful
|
||||
from cybertools.stateful.definition import StatesDefinition
|
||||
from cybertools.stateful.definition import State, Transition
|
||||
from cybertools.stateful.interfaces import IStatesDefinition
|
||||
from cybertools.tracking.interfaces import ITrackingStorage
|
||||
from loops.knowledge.qualification.interfaces import IQualificationRecord, \
|
||||
IQualificationRecords
|
||||
from loops.organize.work.base import WorkItem, WorkItems
|
||||
|
||||
|
||||
@implementer(IStatesDefinition)
|
||||
def qualificationStates():
|
||||
return StatesDefinition('qualification',
|
||||
State('new', 'new', ('assign',),
|
||||
color='grey'),
|
||||
State('open', 'open',
|
||||
('register',
|
||||
#'pass', 'fail',
|
||||
'cancel', 'modify'),
|
||||
color='red'),
|
||||
State('registered', 'registered',
|
||||
('register', 'pass', 'fail', 'unregister', 'cancel', 'modify'),
|
||||
color='yellow'),
|
||||
State('passed', 'passed',
|
||||
('cancel', 'close', 'modify', 'open', 'expire'),
|
||||
color='green'),
|
||||
State('failed', 'failed',
|
||||
('register', 'cancel', 'modify', 'open'),
|
||||
color='green'),
|
||||
State('expired', 'expired',
|
||||
('register', 'cancel', 'modify', 'open'),
|
||||
color='red'),
|
||||
State('cancelled', 'cancelled', ('modify', 'open'),
|
||||
color='grey'),
|
||||
State('closed', 'closed', ('modify', 'open'),
|
||||
color='lightblue'),
|
||||
# not directly reachable states:
|
||||
State('open_x', 'open', ('modify',), color='red'),
|
||||
State('registered_x', 'registered', ('modify',), color='yellow'),
|
||||
# transitions:
|
||||
Transition('assign', 'assign', 'open'),
|
||||
Transition('register', 'register', 'registered'),
|
||||
Transition('pass', 'pass', 'passed'),
|
||||
Transition('fail', 'fail', 'failed'),
|
||||
Transition('unregister', 'unregister', 'open'),
|
||||
Transition('cancel', 'cancel', 'cancelled'),
|
||||
Transition('modify', 'modify', 'open'),
|
||||
Transition('close', 'close', 'closed'),
|
||||
Transition('open', 'open', 'open'),
|
||||
#initialState='open')
|
||||
initialState='new') # TODO: handle assignment to competence
|
||||
|
||||
|
||||
class QualificationRecord(WorkItem):
|
||||
|
||||
implements(IQualificationRecord)
|
||||
|
||||
typeName = 'QualificationRecord'
|
||||
typeInterface = IQualificationRecord
|
||||
statesDefinition = 'knowledge.qualification'
|
||||
|
||||
def doAction(self, action, userName, **kw):
|
||||
new = self.createNew(action, userName, **kw)
|
||||
new.userName = self.userName
|
||||
new.doTransition(action)
|
||||
new.reindex()
|
||||
return new
|
||||
|
||||
|
||||
class QualificationRecords(WorkItems):
|
||||
""" A tracking storage adapter managing qualification records.
|
||||
"""
|
||||
|
||||
implements(IQualificationRecords)
|
||||
adapts(ITrackingStorage)
|
||||
|
53
knowledge/qualification/browser.py
Normal file
53
knowledge/qualification/browser.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
"""
|
||||
Definition of view classes and other browser related stuff for the
|
||||
loops.knowledge package.
|
||||
"""
|
||||
|
||||
from zope import interface, component
|
||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||
from zope.cachedescriptors.property import Lazy
|
||||
|
||||
from loops.expert.browser.report import ResultsConceptView
|
||||
from loops.knowledge.browser import template, knowledge_macros
|
||||
from loops.knowledge.qualification.base import QualificationRecord
|
||||
from loops.organize.work.browser import CreateWorkItemForm, CreateWorkItem
|
||||
|
||||
|
||||
class PersonQualificationView(ResultsConceptView):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class CreateQualificationRecordForm(CreateWorkItemForm):
|
||||
|
||||
macros = knowledge_macros
|
||||
recordManagerName = 'qualification'
|
||||
trackFactory = QualificationRecord
|
||||
|
||||
@Lazy
|
||||
def macro(self):
|
||||
return self.macros['create_qualification']
|
||||
|
||||
|
||||
class CreateQualificationRecord(CreateWorkItem):
|
||||
|
||||
pass
|
||||
|
39
knowledge/qualification/configure.zcml
Normal file
39
knowledge/qualification/configure.zcml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<configure
|
||||
xmlns:zope="http://namespaces.zope.org/zope"
|
||||
xmlns:browser="http://namespaces.zope.org/browser"
|
||||
i18n_domain="loops">
|
||||
|
||||
<!-- records -->
|
||||
|
||||
<zope:class class="loops.knowledge.qualification.base.QualificationRecord">
|
||||
<require permission="zope.View"
|
||||
interface="loops.knowledge.qualification.interfaces.IQualificationRecord" />
|
||||
<require permission="zope.ManageContent"
|
||||
set_schema="loops.knowledge.qualification.interfaces.IQualificationRecord" />
|
||||
</zope:class>
|
||||
|
||||
<zope:adapter
|
||||
factory="loops.knowledge.qualification.base.QualificationRecords"
|
||||
provides="loops.knowledge.qualification.interfaces.IQualificationRecords" />
|
||||
|
||||
<zope:utility
|
||||
factory="loops.knowledge.qualification.base.qualificationStates"
|
||||
provides="cybertools.stateful.interfaces.IStatesDefinition"
|
||||
name="knowledge.qualification" />
|
||||
|
||||
<!-- views -->
|
||||
|
||||
<browser:page
|
||||
name="create_qualification.html"
|
||||
for="loops.interfaces.INode"
|
||||
class="loops.knowledge.qualification.browser.CreateQualificationRecordForm"
|
||||
permission="zope.View" />
|
||||
|
||||
<zope:adapter
|
||||
name="create_qualification"
|
||||
for="loops.browser.node.NodeView
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
factory="loops.knowledge.qualification.browser.CreateQualificationRecord"
|
||||
permission="zope.View" />
|
||||
|
||||
</configure>
|
37
knowledge/qualification/interfaces.py
Normal file
37
knowledge/qualification/interfaces.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
"""
|
||||
Interfaces for knowledge management and elearning with loops.
|
||||
"""
|
||||
|
||||
from zope.interface import Interface, Attribute
|
||||
from zope import interface, component, schema
|
||||
|
||||
from cybertools.organize.interfaces import IWorkItem, IWorkItems
|
||||
|
||||
|
||||
class IQualificationRecord(IWorkItem):
|
||||
""" Records needs for qualification (acqusition of competence)
|
||||
and corresponding participations in training events etc.
|
||||
"""
|
||||
|
||||
|
||||
class IQualificationRecords(IWorkItems):
|
||||
""" Container for qualification records.
|
||||
"""
|
1
knowledge/survey/__init__.py
Normal file
1
knowledge/survey/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
'''package loops.knowledge.survey'''
|
33
knowledge/survey/base.py
Normal file
33
knowledge/survey/base.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
"""
|
||||
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
|
||||
|
||||
|
||||
class Questionnaire(BaseQuestionnaire):
|
||||
|
||||
pass
|
||||
|
6
knowledge/survey/configure.zcml
Normal file
6
knowledge/survey/configure.zcml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<configure
|
||||
xmlns:zope="http://namespaces.zope.org/zope"
|
||||
xmlns:browser="http://namespaces.zope.org/browser"
|
||||
i18n_domain="loops">
|
||||
|
||||
</configure>
|
24
knowledge/survey/interfaces.py
Normal file
24
knowledge/survey/interfaces.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
"""
|
||||
Interfaces for surveys used in knowledge management.
|
||||
"""
|
||||
|
||||
from zope.interface import Interface, Attribute
|
||||
from zope import interface, component, schema
|
Loading…
Add table
Reference in a new issue