EduploneLearningSequence .cvsignore,NONE,1.1 EduploneActivity.py,1.9,1.10 EduploneLearningSequence.py,1.6,1.7 __init__.py,1.2,1.3
Jens Klein <[email protected]>
| Newsgroups | gmane.comp.web.zope.eduplone.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/eduplone/EduploneLearningSequence
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3239
Modified Files:
EduploneActivity.py EduploneLearningSequence.py __init__.py
Added Files:
.cvsignore
Log Message:
first name-ageddon
be careful, still busg in
--- NEW FILE: .cvsignore ---
*.pyc
Index: EduploneLearningSequence.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneLearningSequence/EduploneLearningSequence.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** EduploneLearningSequence.py 2 Jun 2004 22:12:07 -0000 1.6
--- EduploneLearningSequence.py 16 Jun 2004 14:05:31 -0000 1.7
***************
*** 17,24 ****
from AccessControl import ClassSecurityInfo
from Products.CMFCore import CMFCorePermissions
! from Products.CMFCore.utils import getToolByName
from Products.Archetypes.public import *
! from Products.ATContentTypes.types.ATFolder import ATFolder
from Products.EduploneTypes.IMSBaseXML import IMSBaseXML
--- 17,24 ----
from AccessControl import ClassSecurityInfo
from Products.CMFCore import CMFCorePermissions
! from Products.CMFCore.utils import getToolByName
from Products.Archetypes.public import *
! from Products.ATContentTypes.types.ATFolder import ATFolder
from Products.EduploneTypes.IMSBaseXML import IMSBaseXML
***************
*** 26,80 ****
__implements__ = ATFolder.__implements__
!
! security = ClassSecurityInfo()
portal_type = meta_type = 'EduploneLearningSequence'
! archetype_name = 'eduplone Learning Sequence'
! actions = (
! { 'id': 'view',
! 'name': 'View',
! 'action': 'folder_listing',
! 'permissions': (CMFCorePermissions.View,)
! },
{ 'id' : 'local_roles',
! 'name' : 'Local Roles',
'action' : 'string:${folder_url}/folder_localrole_form',
'permissions' : (CMFCorePermissions.ManageProperties,),
'category' : 'folder'
},
! { 'id': 'imscp_export',
! 'name': 'IMS-Export',
! 'action': 'zip_export',
! 'permissions': (CMFCorePermissions.ManagePortal,),
! 'category': 'object',
! },
! { 'id': 'start_step',
! 'name': 'Start Course',
! 'action': 'ep_abs_ls_start',
! 'permissions': ('Start Learning Sequence',),
! 'category': 'object',
},
)
- factory_type_information = {
- 'allowed_content_types':('eduplone activity',),
- 'content_icon':'learningsequence_icon.gif',
- 'immediate_view':'view',
- 'global_allow':1,
- 'filter_content_types':1,
- }
-
-
-
#Methods
# IMS EXPORT
! security.declareProtected(CMFCorePermissions.ModifyPortalContent,
'getIMSXMLOrganisationNodes')
def getIMSXMLOrganisationNodes(self, document, pathdict={}):
""" returns Organisation node extended by a learning design """
! # get primary element in document and append namespace for
# learning-design
! self.setXMLAttr(document,document.firstChild,'xmlns:imsld',
'http://www.imsglobal.org/xsd/imscp_v1p1')
--- 26,76 ----
__implements__ = ATFolder.__implements__
! security = ClassSecurityInfo()
!
portal_type = meta_type = 'EduploneLearningSequence'
! archetype_name = 'Learning Sequence (eduplone)'
! allowed_content_types = ('eduplone activity',)
! content_icon = 'learningsequence_icon.gif'
! immediate_view = 'view'
! global_allow = 1
! filter_content_types = 1
! actions = (
! { 'id' : 'view',
! 'name' : 'View',
! 'action' : 'string:folder_listing',
! 'visible' : 0,
! 'permissions' : (CMFCorePermissions.View,)
! },
{ 'id' : 'local_roles',
! 'name' : 'sharing',
'action' : 'string:${folder_url}/folder_localrole_form',
'permissions' : (CMFCorePermissions.ManageProperties,),
'category' : 'folder'
},
! { 'id' : 'imscp_export',
! 'name' : 'IMS-Export',
! 'action' : 'string:zip_export',
! 'permissions' : (CMFCorePermissions.ManagePortal,),
! 'category' : 'object',
! },
! { 'id' : 'start_lsq',
! 'name' : 'Start Course',
! 'action' : 'string:lsq_start_form',
! 'permissions' : ('Start Learning Sequence',),
! 'category' : 'object',
},
)
#Methods
# IMS EXPORT
! security.declareProtected(CMFCorePermissions.ModifyPortalContent,
'getIMSXMLOrganisationNodes')
def getIMSXMLOrganisationNodes(self, document, pathdict={}):
""" returns Organisation node extended by a learning design """
! # get primary element in document and append namespace for
# learning-design
! self.setXMLAttr(document,document.firstChild,'xmlns:imsld',
'http://www.imsglobal.org/xsd/imscp_v1p1')
***************
*** 84,88 ****
# add mandatory attributes
self.setXMLAttr(document,element_ld,'level','A')
! self.setXMLAttr(document,element_ld,'identifier',
'eduplone_Learning_Sequence_1')
self.setXMLAttr(document,element_ld,'sequence-used',"false")
--- 80,84 ----
# add mandatory attributes
self.setXMLAttr(document,element_ld,'level','A')
! self.setXMLAttr(document,element_ld,'identifier',
'eduplone_Learning_Sequence_1')
self.setXMLAttr(document,element_ld,'sequence-used',"false")
***************
*** 148,152 ****
# get default organisations
! organisations = IMSBaseXML.getIMSXMLOrganisationNodes(self,
document, pathdict)
organisations.append(element_ld)
--- 144,148 ----
# get default organisations
! organisations = IMSBaseXML.getIMSXMLOrganisationNodes(self,
document, pathdict)
organisations.append(element_ld)
***************
*** 164,268 ****
for obj in self.objectValues():
obj.appendIMSXMLRoleParts(document,act)
!
! # FIND STUDENTS
! # the following method is written by Danny 'ender' Bloomendahl, thx!
! def getMembersWithRole(self, object, role):
""" get a sorted list of members with a particular role for a given object """
! membership_tool = getToolByName(self, 'portal_membership')
! members = membership_tool.searchForMembers(roles=[role])
!
portal = getToolByName(self, 'portal_url').getPortalObject()
! o = object
users = {}
! while 1:
! if hasattr(o, 'users_with_local_role'):
! user_list = o.users_with_local_role(role)
for u in user_list:
! users[u] = 1
if o == portal:
break
o = o.getParentNode()
user_list = users.keys()
! user_list.sort()
for u in user_list:
! m = membership_tool.getMemberById(u)
! if m.isGroup():
! group = m.getGroupUsers()
! for user in group:
! md_user = membership_tool.getMemberById(user.id)
! if md_user not in members:
! members.append(md_user)
! if not m in members:
! members.append(m)
return members
def getStudents(self) :
! """ Returns users that are students """
! learnerids = self.getMembersWithRole(self,'eduploneLearner')
return learnerids
! # OPENFLOW
!
! security.declareProtected('Start Learning Sequence', 'ep_abs_ls_start')
! def ep_abs_ls_start(self) :
! """ This triggers the OpenFlow Engine via script. """
!
! # return "Hallo"
!
! items = self.objectValues()
! if (len(items) > 0) :
! return self.ep_abs_start_form(uid=items[0].UID(), next=items[0].UID())
! else :
! self.REQUEST.RESPONSE.redirect(self.portal_membership.getHomeUrl( \
! self.REQUEST.AUTHENTICATED_USER.getUserName())+
! '?portal_status_message=No+items+in+sequence.')
! return "No items in Sequence."
!
! security.declareProtected('Start Learning Sequence', 'ep_abs_start_action')
! def ep_abs_start_action(self) :
""" Starts Workitems """
- #print "ep_abs_start_action is being called"
-
request = self.REQUEST
RESPONSE = request.RESPONSE
!
! if not request.has_key('students'):
! self.REQUEST.RESPONSE.redirect(self.absolute_url()+
! '/ep_abs_ls_start?portal_status_message='
! 'You+need+to+select+at+least+one+student!')
! return
! students = request['students']
! tutor=self.REQUEST.AUTHENTICATED_USER
! uid = request['uid']
! archetype = self.archetype_tool.getObject(uid)
! at_metatype = archetype.getActivitytype()
! oftool = self.portal_openflow
! user_name = self.REQUEST.AUTHENTICATED_USER.getUserName()
!
! # If only one student was selected you would get a string instead of a
# list
if type(students) == type("") :
students = [students]
!
! #print "Students selected:", students
! #print "Tutor initiating:", tutor
! #print "Archetype uid:", uid
! #print "Archetype:", archetype
! #print "Archetype.meta_type:", at_metatype
!
! ## # The Engine will take care of meta_types......
! ## try :
! ## isLearningStep = archetype.isLearningStep
! ## except :
! ## isLearningStep = 0
!
! # Every Student will get an own Instance
! for student in students :
! instance_id = oftool.addInstance(process_id='ep_abs_process',
customer=student,
! comments=archetype.title_or_id(),
title=self.title_or_id(),
# This is displayed in worklist portlet
--- 160,242 ----
for obj in self.objectValues():
obj.appendIMSXMLRoleParts(document,act)
!
! # FIND STUDENTS
! # the following method is originally written by Danny 'ender' Bloomendahl, thx!
! def getMembersWithRole(self, role):
""" get a sorted list of members with a particular role for a given object """
! membership_tool = getToolByName(self, 'portal_membership')
! # the uncommented code doesnt work with CMFMember
! #members = membership_tool.searchForMembers(roles=[role])
! #print members
! members = []
portal = getToolByName(self, 'portal_url').getPortalObject()
! o = self
users = {}
! while 1:
! if o.has_local_roles():
! user_list = o.users_with_local_role(role)
for u in user_list:
! users[u] = 1
if o == portal:
break
o = o.getParentNode()
user_list = users.keys()
! user_list.sort()
for u in user_list:
! m = membership_tool.getMemberById(u)
! # the follwing line is a hack to make it with CMFMember working
! u = hasattr(m, 'isGroup') and m or m.getUser()
! if u.isGroup():
! group = u.getGroupUsers()
! for guser in group:
! mguser = membership_tool.getMemberById(guser.id)
! if not mguser in members:
! members.append(mguser)
! else:
! if not m in members:
! members.append(m)
return members
def getStudents(self) :
! """ Returns users that are students """
! learnerids = self.getMembersWithRole('eduploneLearner')
return learnerids
! # OPENFLOW
! security.declareProtected('Start Learning Sequence', 'lsq_start')
! def lsq_start(self, students=None) :
""" Starts Workitems """
request = self.REQUEST
RESPONSE = request.RESPONSE
!
! if not students:
! if not request.has_key('students'):
! self.REQUEST.RESPONSE.redirect(self.absolute_url()+
! '/lsq_start_form?portal_status_message='
! 'You+need+to+select+at+least+one+student!')
! return
! students = request['students']
!
! # If only one student was selected you would get a string instead of a
# list
if type(students) == type("") :
students = [students]
!
! tutor = self.REQUEST.AUTHENTICATED_USER
! step = self.objectValues()[0]
! uid = step.UID()
! activitytype = step.getActivitytype()
!
! oftool = self.portal_openflow
! user_name = self.REQUEST.AUTHENTICATED_USER.getUserName()
!
! # every Student gets an own Instance
! for student in students:
! instance_id = oftool.addInstance(process_id='lsq_process',
customer=student,
! comments=step.title_or_id(),
title=self.title_or_id(),
# This is displayed in worklist portlet
***************
*** 270,290 ****
instance = oftool[instance_id]
! #print "Instance:", instance_id
!
! instance.manage_addProperty(id='user', value=student, type='string')
! #print "Added user to instance:", student
!
! instance.manage_addProperty(id='uid', value=uid, type='string')
! #print "Added uid to instance: ", uid
!
! instance.manage_addProperty(id='at_metatype', value=at_metatype,
! type='string')
! #print "Added at_metatype to instance: ", at_metatype
!
! instance.manage_addProperty(id='student', value=student, type='string')
! #print "Added student to instance: ", student
!
! instance.manage_addProperty(id='tutor', value=tutor, type='string')
! #print "Added tutor to instance: ", tutor
# Start the Engine
--- 244,252 ----
instance = oftool[instance_id]
! instance.manage_addProperty(id='user', value=student, type='string')
! instance.manage_addProperty(id='uid', value=uid, type='string')
! instance.manage_addProperty(id='activitytype', value=activitytype, type='string')
! instance.manage_addProperty(id='student', value=student, type='string')
! instance.manage_addProperty(id='tutor', value=tutor, type='string')
# Start the Engine
***************
*** 299,322 ****
)
- #print "workitemsbrains in instance: ", repr(workitems)
-
for workitembrain in workitems :
! workitem = workitembrain.getObject()
! #print "workitem", workitem
! #print "workitem.id:", workitem.id
! #print "workitem.status", workitem.status
!
if (not workitem.actor) :
! oftool.assignWorkitem(instance_id, workitem_id=workitem.id,
actor=student)
! oftool.activateWorkitem(instance_id, workitem_id=workitem.id,
actor=student)
!
! #print "workitem.actor:", workitem.actor
!
! # return "Hallo"
!
! self.REQUEST.RESPONSE.redirect( \
! self.portal_membership.getHomeUrl(user_name)+
'?portal_status_message=Learning+Sequence+started.')
--- 261,273 ----
)
for workitembrain in workitems :
! workitem = workitembrain.getObject()
if (not workitem.actor) :
! oftool.assignWorkitem(instance_id, workitem_id=workitem.id,
actor=student)
! oftool.activateWorkitem(instance_id, workitem_id=workitem.id,
actor=student)
!
! self.REQUEST.RESPONSE.redirect( self.absolute_url() +
'?portal_status_message=Learning+Sequence+started.')
Index: EduploneActivity.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneLearningSequence/EduploneActivity.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** EduploneActivity.py 2 Jun 2004 22:12:07 -0000 1.9
--- EduploneActivity.py 16 Jun 2004 14:05:31 -0000 1.10
***************
*** 71,75 ****
'id': 'view',
'name': 'View',
! 'action': 'eduplone_activity_view',
'permissions': (CMFCorePermissions.View,)
},
--- 71,75 ----
'id': 'view',
'name': 'View',
! 'action': 'string:eduplone_activity_view',
'permissions': (CMFCorePermissions.View,)
},
Index: __init__.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneLearningSequence/__init__.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** __init__.py 18 Mar 2004 13:02:50 -0000 1.2
--- __init__.py 16 Jun 2004 14:05:31 -0000 1.3
***************
*** 10,16 ****
# Licence: GNU General Public Licencse Version 2 or newer
#-----------------------------------------------------------------------------
!
from Globals import package_home
!
from zLOG import LOG, INFO
--- 10,16 ----
# Licence: GNU General Public Licencse Version 2 or newer
#-----------------------------------------------------------------------------
!
from Globals import package_home
!
from zLOG import LOG, INFO
***************
*** 27,33 ****
def initialize(context):
! import EduploneLearningSequence
! import EduploneActivity
!
LOG(PROJECTNAME, INFO, 'initializing...')
--- 27,33 ----
def initialize(context):
! import EduploneLearningSequence
! import EduploneActivity
!
LOG(PROJECTNAME, INFO, 'initializing...')
-------------------------------------------------------
This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND