EduploneExamPersistence ExamPersistentFolder.py,1.3,1.4
Nils Haagen <[email protected]> Sun, 15 May 2005 12:43:50 +0000
| Newsgroups | gmane.comp.web.zope.eduplone.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/eduplone/EduploneExamPersistence
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7993
Modified Files:
ExamPersistentFolder.py
Log Message:
stores PersistentResponse as content-object in the Memberfolder. this is just temporarily - and should move to memberobject...
Index: ExamPersistentFolder.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExamPersistence/ExamPersistentFolder.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ExamPersistentFolder.py 25 Feb 2005 19:43:01 -0000 1.3
--- ExamPersistentFolder.py 15 May 2005 12:43:48 -0000 1.4
***************
*** 33,41 ****
##code-section module-header #fill in your manual code here
from Products.EduploneExamPersistence import Permissions as eXamPermissions
- from Products.EduploneExam.ExamFolder import ExamFolder
from Products.EduploneExamPersistence.userresponses.PersistentResponse import PersistentResponse
##/code-section module-header
--- 33,43 ----
##code-section module-header #fill in your manual code here
+ from Products.CMFCore.utils import getToolByName
from Products.EduploneExamPersistence import Permissions as eXamPermissions
from Products.EduploneExamPersistence.userresponses.PersistentResponse import PersistentResponse
+ from Products.EduploneExam.ExamFolder import ExamFolder
+ from Products.EduploneExam.registry import getQuestionTypes
##/code-section module-header
***************
*** 45,50 ****
portal_type = meta_type = 'ExamPersistentFolder'
archetype_name = 'ExamPersistentFolder' #this name appears in the 'add' box
! allowed_content_types = []
!
__implements__ = getattr(ExamFolder,'__implements__',())
--- 47,51 ----
portal_type = meta_type = 'ExamPersistentFolder'
archetype_name = 'ExamPersistentFolder' #this name appears in the 'add' box
!
__implements__ = getattr(ExamFolder,'__implements__',())
***************
*** 55,83 ****
schema=ExamFolder.schema
! #Methods
- #methods from Interface IExamContext
def deliverResponse(self, question, create=False):
'''
<p>Returns an object that implements IExamResponse. </p>
'''
! #import pdb
#pdb.set_trace()
u=getSecurityManager().getUser().getId()
if u is None:
! u="anonymous"
q=question.UID()
! if not self._examResponses.has_key(u):
! self._examResponses[u]={}
! if not self._examResponses[u].has_key(q):
! self._examResponses[u][q]=PersistentResponse()
- return self._examResponses[u][q]
#manual methods
--- 56,131 ----
schema=ExamFolder.schema
! #Methods
!
! #def initializeArchetype(self, **kwargs):
! # """ """
! # _examResponses={}
+ security.declarePublic('allowedContentTypes')
+ def allowedContentTypes(self):
+ """ use own registry to recognize allowed tpyes """
+ tt = getToolByName(self,'portal_types')
+ qtypes = getQuestionTypes()
+ allowed = [tt[tn] for tn in \
+ [qtypes[key].meta_type \
+ for key in qtypes]\
+ ]
+ return allowed
+ security.declarePublic('invokeFactory')
+ def invokeFactory( self, type_name, id, RESPONSE=None, *args, **kw):
+ """ Invokes the portal_types tool """
+ try:
+ return OrderedBaseFolder.invokeFactory(self, type_name, id, RESPONSE=None, *args, **kw)
+ except:
+ self._updateRegisteredTypes()
+ return OrderedBaseFolder.invokeFactory(self, type_name, id, RESPONSE=None, *args, **kw)
+
+ #manually created methods
+ def _updateRegisteredTypes(self):
+ """ updates own fti based on registered containers """
+ tt = getToolByName(self,'portal_types')
+ ti = tt[self.meta_type]
+ qtypes = getQuestionTypes()
+ allowedmetatypes = [qtypes[key].meta_type for key in qtypes]
+ ti.allowed_content_types=tuple(allowedmetatypes)
+
+ #methods from Interface IExamContext
+ security.declarePublic('deliverResponse')
def deliverResponse(self, question, create=False):
'''
<p>Returns an object that implements IExamResponse. </p>
'''
! import pdb
#pdb.set_trace()
u=getSecurityManager().getUser().getId()
if u is None:
! raise Unauthorized, 'SecurityManager could not get your username. Are you logged in?'
q=question.UID()
!
!
! #this should move to some other product,
! #or better, an eduploneMemberObject
! #
! mfolder=getToolByName(self, 'portal_membership').getHomeFolder(u)
! if not 'eduploneExams' in mfolder.objectIds():
! mfolder.invokeFactory('Folder', 'eduploneExams')
! mfolder.eduploneExams.setTitle('eduplone Exam Answers')
!
! if self.UID() not in mfolder.eduploneExams.objectIds():
! mfolder.eduploneExams.invokeFactory('Folder', self.UID())
! mfolder.eduploneExams[self.UID()].setTitle('Answers for %s' % self.Title())
!
! examRFolder=mfolder.eduploneExams[self.UID()]
! if question.UID() not in examRFolder.objectIds():
! examRFolder.invokeFactory('PersistentResponse', question.UID())
!
! return examRFolder[question.UID()]
#manual methods
***************
*** 86,90 ****
'''returns a list of userIds for this eXam
'''
! return self._userResponses.keys()
security.declareProtected(eXamPermissions.manageExam, 'getUserResponses')
--- 134,138 ----
'''returns a list of userIds for this eXam
'''
! return self._examResponses.keys()
security.declareProtected(eXamPermissions.manageExam, 'getUserResponses')
***************
*** 93,106 ****
'''
if userId:
! if self._userResponses.has_key(userId):
! return self._userResponses[userId]
else:
return None
else:
! return self._userResponses
# uncomment lines below when you need
factory_type_information={
! 'allowed_content_types':allowed_content_types,
'allow_discussion': 0,
#'content_icon':'ExamPersistentFolder.gif',
--- 141,154 ----
'''
if userId:
! if self._examResponses.has_key(userId):
! return self._examResponses[userId]
else:
return None
else:
! return self._examResponses
# uncomment lines below when you need
factory_type_information={
! 'allowed_content_types':[],
'allow_discussion': 0,
#'content_icon':'ExamPersistentFolder.gif',
-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7393&alloc_id=16281&op=click