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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.