work in progress: CCM Competence and Certification Management: starting with concepts types and records
This commit is contained in:
parent
53a33964d0
commit
a4968e76d6
5 changed files with 113 additions and 3 deletions
|
@ -172,6 +172,16 @@ For testing, we first have to provide the needed utilities and settings
|
||||||
Competence and Certification Management
|
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
|
||||||
|
>>> component.provideUtility(qualificationStates,
|
||||||
|
... provides=IStatesDefinition)
|
||||||
|
>>> component.provideAdapter(QualificationRecords,
|
||||||
|
... provides=IQualificationRecords)
|
||||||
|
|
||||||
|
|
||||||
Glossaries
|
Glossaries
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,22 @@
|
||||||
interface="cybertools.knowledge.interfaces.IKnowledgeProvider" />
|
interface="cybertools.knowledge.interfaces.IKnowledgeProvider" />
|
||||||
</zope:class>
|
</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 -->
|
<!-- views -->
|
||||||
|
|
||||||
<zope:adapter
|
<zope:adapter
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
type(u'competence', u'Competence', viewName=u'',
|
||||||
|
typeInterface=u'', options=u'action.portlet:edit_concept')
|
||||||
type(u'person', u'Person', viewName=u'',
|
type(u'person', u'Person', viewName=u'',
|
||||||
typeInterface=u'loops.knowledge.interfaces.IPerson',
|
typeInterface=u'loops.knowledge.interfaces.IPerson',
|
||||||
options=u'action.portlet:editPerson')
|
options=u'action.portlet:editPerson')
|
||||||
|
@ -7,6 +9,11 @@ type(u'task', u'Aufgabe', viewName=u'',
|
||||||
type(u'topic', u'Thema', viewName=u'',
|
type(u'topic', u'Thema', viewName=u'',
|
||||||
typeInterface=u'loops.knowledge.interfaces.ITopic',
|
typeInterface=u'loops.knowledge.interfaces.ITopic',
|
||||||
options=u'action.portlet:createTopic,editTopic')
|
options=u'action.portlet:createTopic,editTopic')
|
||||||
|
type(u'training_event', u'Schulung', viewName=u'',
|
||||||
|
typeInterface=u'loops.organize.interfaces.ITask',
|
||||||
|
options=u'action.portlet:edit_concept')
|
||||||
|
type(u'training_offer', u'Schulungsangebot', viewName=u'',
|
||||||
|
typeInterface=u'', options=u'action.portlet:create_subtype,edit_concept')
|
||||||
|
|
||||||
concept(u'general', u'Allgemein', u'domain')
|
concept(u'general', u'Allgemein', u'domain')
|
||||||
concept(u'system', u'System', u'domain')
|
concept(u'system', u'System', u'domain')
|
||||||
|
@ -21,6 +28,7 @@ concept(u'issubtype', u'is Subtype', u'predicate', options=u'hide_children',
|
||||||
predicateInterface='loops.interfaces.IIsSubtype')
|
predicateInterface='loops.interfaces.IIsSubtype')
|
||||||
|
|
||||||
# structure
|
# structure
|
||||||
|
child(u'competence', u'general', u'standard')
|
||||||
child(u'depends', u'general', u'standard')
|
child(u'depends', u'general', u'standard')
|
||||||
child(u'knows', u'general', u'standard')
|
child(u'knows', u'general', u'standard')
|
||||||
child(u'person', u'general', u'standard')
|
child(u'person', u'general', u'standard')
|
||||||
|
@ -28,8 +36,15 @@ child(u'provides', u'general', u'standard')
|
||||||
child(u'requires', u'general', u'standard')
|
child(u'requires', u'general', u'standard')
|
||||||
child(u'task', u'general', u'standard')
|
child(u'task', u'general', u'standard')
|
||||||
child(u'topic', u'general', u'standard')
|
child(u'topic', u'general', u'standard')
|
||||||
|
child(u'training_event', u'general', u'standard')
|
||||||
|
child(u'training_offer', u'general', u'standard')
|
||||||
|
|
||||||
child(u'issubtype', u'system', u'standard')
|
child(u'issubtype', u'system', u'standard')
|
||||||
|
|
||||||
|
child(u'training_event', u'competence', u'issubtype',
|
||||||
|
usePredicate=u'provides')
|
||||||
|
child(u'training_offer', u'competence', u'issubtype',
|
||||||
|
usePredicate=u'provides')
|
||||||
|
|
||||||
# records
|
# records
|
||||||
records(u'qualification', u'loops.knowledge.qualification.QualificationRecord')
|
records(u'qualification', u'loops.knowledge.qualification.QualificationRecord')
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011 Helmut Merz helmutm@cy55.de
|
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -18,8 +18,6 @@
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Interfaces for knowledge management and elearning with loops.
|
Interfaces for knowledge management and elearning with loops.
|
||||||
|
|
||||||
$Id$
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from zope.interface import Interface, Attribute
|
from zope.interface import Interface, Attribute
|
||||||
|
@ -29,6 +27,7 @@ from zope.security.proxy import removeSecurityProxy
|
||||||
|
|
||||||
from cybertools.knowledge.interfaces import IKnowing, IRequirementProfile
|
from cybertools.knowledge.interfaces import IKnowing, IRequirementProfile
|
||||||
from cybertools.knowledge.interfaces import IKnowledgeElement
|
from cybertools.knowledge.interfaces import IKnowledgeElement
|
||||||
|
from cybertools.organize.interfaces import IWorkItem, IWorkItems
|
||||||
from loops.interfaces import IConceptSchema, ILoopsAdapter
|
from loops.interfaces import IConceptSchema, ILoopsAdapter
|
||||||
from loops.organize.interfaces import IPerson as IBasePerson
|
from loops.organize.interfaces import IPerson as IBasePerson
|
||||||
from loops.organize.interfaces import ITask as IBaseTask
|
from loops.organize.interfaces import ITask as IBaseTask
|
||||||
|
@ -63,3 +62,13 @@ class ITopic(IConceptSchema, IKnowledgeElement, ILoopsAdapter):
|
||||||
""" Just a topic, some general classification concept.
|
""" 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.
|
||||||
|
"""
|
||||||
|
|
60
knowledge/qualification.py
Normal file
60
knowledge/qualification.py
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2012 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.interfaces import IQualificationRecord, \
|
||||||
|
IQualificationRecords
|
||||||
|
from loops.organize.work.base import WorkItem, WorkItems
|
||||||
|
|
||||||
|
|
||||||
|
@implementer(IStatesDefinition)
|
||||||
|
def qualificationStates():
|
||||||
|
return StatesDefinition('qualification',
|
||||||
|
State('new', 'new',
|
||||||
|
('plan', 'accept', 'start', 'work', 'finish', 'delegate', 'cancel'),
|
||||||
|
color='red'),)
|
||||||
|
|
||||||
|
|
||||||
|
class QualificationRecord(WorkItem):
|
||||||
|
|
||||||
|
implements(IQualificationRecord)
|
||||||
|
|
||||||
|
typeName = 'QualificationRecord'
|
||||||
|
statesDefinition = 'knowledge.qualification'
|
||||||
|
|
||||||
|
|
||||||
|
class QualificationRecords(WorkItems):
|
||||||
|
""" A tracking storage adapter managing qualification records.
|
||||||
|
"""
|
||||||
|
|
||||||
|
implements(IQualificationRecords)
|
||||||
|
adapts(ITrackingStorage)
|
||||||
|
|
Loading…
Add table
Reference in a new issue