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