work in progress: CCM Competence and Certification Management: starting with concepts types and records

This commit is contained in:
Helmut Merz 2012-05-19 10:17:41 +02:00
parent 53a33964d0
commit a4968e76d6
5 changed files with 113 additions and 3 deletions

View file

@ -172,6 +172,16 @@ For testing, we first have to provide the needed utilities and settings
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
==========

View file

@ -66,6 +66,22 @@
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

View file

@ -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'',
typeInterface=u'loops.knowledge.interfaces.IPerson',
options=u'action.portlet:editPerson')
@ -7,6 +9,11 @@ type(u'task', u'Aufgabe', viewName=u'',
type(u'topic', u'Thema', viewName=u'',
typeInterface=u'loops.knowledge.interfaces.ITopic',
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'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')
# structure
child(u'competence', u'general', u'standard')
child(u'depends', u'general', u'standard')
child(u'knows', 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'task', 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'training_event', u'competence', u'issubtype',
usePredicate=u'provides')
child(u'training_offer', u'competence', u'issubtype',
usePredicate=u'provides')
# records
records(u'qualification', u'loops.knowledge.qualification.QualificationRecord')

View file

@ -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
# 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.
$Id$
"""
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 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
@ -63,3 +62,13 @@ 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.
"""

View 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)