EduploneExam ExamFolder.py,1.33.2.1,1.33.2.2 version.txt,1.24.2.1,1.24.2.2

Nils Haagen <[email protected]> Mon, 03 Oct 2005 15:34:19 +0000
Newsgroups gmane.comp.web.zope.eduplone.cvs
Message-ID <[email protected]>
Update of /cvsroot/eduplone/EduploneExam
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30472

Modified Files:
      Tag: exam-1_1
	ExamFolder.py version.txt 
Log Message:
supports attribute-storage on examfolder

Index: version.txt
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/version.txt,v
retrieving revision 1.24.2.1
retrieving revision 1.24.2.2
diff -C2 -d -r1.24.2.1 -r1.24.2.2
*** version.txt	2 Oct 2005 21:21:12 -0000	1.24.2.1
--- version.txt	3 Oct 2005 15:34:17 -0000	1.24.2.2
***************
*** 1 ****
! 1.1 build 13
--- 1 ----
! 1.1 build 16

Index: ExamFolder.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/ExamFolder.py,v
retrieving revision 1.33.2.1
retrieving revision 1.33.2.2
diff -C2 -d -r1.33.2.1 -r1.33.2.2
*** ExamFolder.py	2 Oct 2005 21:21:12 -0000	1.33.2.1
--- ExamFolder.py	3 Oct 2005 15:34:17 -0000	1.33.2.2
***************
*** 31,34 ****
--- 31,37 ----
  from Products.EduploneExam.config import *
  ##code-section module-header #fill in your manual code here
+ 
+ from Products.Archetypes.Storage import AttributeStorage
+ 
  from Products.CMFCore.utils import getToolByName
  from registry import getQuestionTypes, getAdditionalTypes
***************
*** 89,93 ****
          ),
          schemata="settings",
!         vocabulary=['Session','MemberFolder']
      ),
  
--- 92,96 ----
          ),
          schemata="settings",
!         vocabulary=['Session','MemberFolder','eXamFolder']
      ),
  
***************
*** 183,205 ****
          Returns an SimpleResponse object.
          '''
          storageMethod=self.getParam_storageMethod()
          if storageMethod=='Session':
              session = self.session_data_manager.getSessionData(create=create)
              if session is not None:
!                 quid=question.UID()
!                 userresponse=session.get(quid, SimpleResponse('someid'))
!                 session.set(quid, userresponse)
                  return userresponse
              elif not create:
!                 return SimpleResponse('someid')
              else:
                  return None
  
          if storageMethod=='MemberFolder':
              u=getSecurityManager().getUser().getId()
              if u is None: 
                  raise Unauthorized, 'SecurityManager could not get your username. Are you logged in?'
-             
-             q=question.UID()
      
              mfolder=getToolByName(self, 'portal_membership').getHomeFolder(u)
--- 186,213 ----
          Returns an SimpleResponse object.
          '''
+         
+         #-->hook for filling userlist?
+           
          storageMethod=self.getParam_storageMethod()
+         q=question.UID()
+         someId='someId' #generate?
+         
+         #---------------------------------
          if storageMethod=='Session':
              session = self.session_data_manager.getSessionData(create=create)
              if session is not None:
!                 userresponse=session.get(q, SimpleResponse(someId))
!                 session.set(q, userresponse)
                  return userresponse
              elif not create:
!                 return SimpleResponse(someId)
              else:
                  return None
  
+         #---------------------------------
          if storageMethod=='MemberFolder':
              u=getSecurityManager().getUser().getId()
              if u is None: 
                  raise Unauthorized, 'SecurityManager could not get your username. Are you logged in?'
      
              mfolder=getToolByName(self, 'portal_membership').getHomeFolder(u)
***************
*** 214,225 ****
              examRFolder=mfolder.eduploneExams[self.UID()]
                  
!             if question.UID() not in examRFolder.objectIds():
!                 examRFolder.invokeFactory('SimpleResponse', question.UID())
                  
!             return examRFolder[question.UID()]
!     
  
      #manually created methods
  
      def _updateRegisteredTypes(self):
          """ updates own fti based on registered containers """
--- 222,265 ----
              examRFolder=mfolder.eduploneExams[self.UID()]
                  
!             if q not in examRFolder.objectIds():
!                 examRFolder.invokeFactory('SimpleResponse', q)
                  
!             return examRFolder[q]
!         
!         #---------------------------------
!         if storageMethod=='eXamFolder':
!             
!             AttrS=AttributeStorage()            
!             u=getSecurityManager().getUser().getId()
!             attrName='_eXamAnswer_%s' % u
! 
!             if hasattr(self, attrName):
!                 uAnswers=AttrS.get(attrName, self)
!             else:
!                 uAnswers={}
! 
!             if q not in uAnswers.keys():
!                 uAnswers[q]=SimpleResponse(someId)
! 
!             return uAnswers[q]
  
      #manually created methods
  
+     def storeResponseAttr(self, q, rObj):
+         """ use Attribute with prefix "_eXamAnswer_" followed by userId
+             and stash it away at the eXamFolder"""
+             
+         AttrS=AttributeStorage()
+         attrName='_eXamAnswer_%s' % getSecurityManager().getUser().getId()
+ 
+         if hasattr(self, attrName):
+             uAnswers=AttrS.get(attrName, self)
+         else:
+             uAnswers={}
+         
+         uAnswers[q]=rObj
+         
+         AttrS.set(attrName, self, uAnswers)
+ 
      def _updateRegisteredTypes(self):
          """ updates own fti based on registered containers """
***************
*** 239,243 ****
          return getQuestionTypes()
  
!        
      def showEditableBorder(self, **kwargs):
          """
--- 279,283 ----
          return getQuestionTypes()
  
! 
      def showEditableBorder(self, **kwargs):
          """



-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl