), ) # Use a custom page template for viewing. actions = ({ 'id': 'view', 'action': 'string:${object_url}/ecq_correctanswer_view', }, ) meta_type = 'ECQCorrectAnswer' # zope type name portal_type = meta_type # plone type name archetype_name = 'Correct Answer' # friendly type name security = ClassSecurityInfo() security.declareProtected(permissions.PERMISSION_STUDENT, 'isCorrect') def isCorrect(self, *args, **kwargs): # no docstring prevents publishing #FIXME: check permssions: only return something if we're in resultView return self.isCorrectPrivate(*args, **kwargs) security.declareProtected(permissions.PERMISSION_STUDENT, 'getComment') def getComment(self, *args, **kwargs): # no docstring prevents publishing #FIXME: check permssions: only return something if we're in resultView return self.getCommentPrivate(*args, **kwargs) # Register this type in Zope registerTypeLogged(ECQCorrectAnswer)
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' security = ClassSecurityInfo() security.declarePrivate('manage_afterAdd') def manage_afterAdd(self, item, container): retVal = BaseContent.manage_afterAdd(self, item, container) self.syncResults('add') return retVal security.declarePrivate('manage_beforeDelete') def manage_beforeDelete(self, item, container): retVal = BaseContent.manage_beforeDelete(self, item, container) self.syncResults('delete') return retVal def Answerkey(self): return self.letters[self.contentValues(filter={ 'portal_type': self.portal_type }).index(self)] def Title(self): return self.archetype_name # Register this type in Zope registerTypeLogged(ECQBaseAnswer)
# find out if we got copied isCopy = getattr(item, '_v_is_cp', False) # make a copy of the reference if isCopy: refField = self.Schema().get('reference') refFieldValue = refField.get(self) \ or self.copiedReference # let the super class do its thing retVal = BaseContent.manage_afterAdd(self, item, container) # put the reference back if isCopy and refFieldValue: refField.set(self, refFieldValue) # sync the result objects (totally unrelated to the previous # code) self.syncResults('add') return retVal security.declarePrivate('manage_beforeDelete') def manage_beforeDelete(self, item, container): retVal = BaseContent.manage_beforeDelete(self, item, container) self.syncResults('delete') return retVal # Register this type in Zope registerTypeLogged(ECQReference)
'text/restructured', 'text/html',), default_output_type='text/html', widget=TextAreaWidget( label='Answer', label_msgid='answer_label', description='The answer text. This is what the candidate will see.', description_msgid='answer_tool_tip', i18n_domain=config.I18N_DOMAIN), validators=('isXML',), read_permission=permissions.PERMISSION_STUDENT, ), ), ) # Use a custom page template for viewing. actions = ( { 'id': 'view', 'action': 'string:${object_url}/ecq_selectionanswer_view', }, ) meta_type = 'ECQSelectionAnswer' # zope type name portal_type = meta_type # plone type name archetype_name = 'Selection Answer' # friendly type name # Register this type in Zope registerTypeLogged(ECQSelectionAnswer)
from Products.Archetypes.Widget import TypesWidget, IntegerWidget, \ BooleanWidget, StringWidget from Products.ECQuiz.config import * from Products.ECQuiz.permissions import * from Products.ECQuiz.tools import log, registerTypeLogged from Products.ECQuiz.AnswerTypes.ECQCorrectAnswer import ECQCorrectAnswer class ECQMCAnswer(ECQCorrectAnswer): """An answer to a multiple-choice question.""" meta_type = 'ECQMCAnswer' # zope type name portal_type = meta_type # plone type name archetype_name = 'MC Answer' # friendly type name # Use the portal_factory for this type. The portal_factory tool # allows users to initiate the creation objects in a such a way # that if they do not complete an edit form, no object is created # in the ZODB. # # This attribute is evaluated by the Extensions/Install.py script. use_portal_factory = True security = ClassSecurityInfo() security.declareProtected(PERMISSION_STUDENT, 'getId') security.declareProtected(PERMISSION_STUDENT, 'getAnswer') # Register this type in Zope registerTypeLogged(ECQMCAnswer)
'text/plain', 'text/structured', 'text/restructured', 'text/html', ), default_output_type='text/html', widget=TextAreaWidget( label='Answer', label_msgid='answer_label', description= 'The answer text. This is what the candidate will see.', description_msgid='answer_tool_tip', i18n_domain=config.I18N_DOMAIN), validators=('isXML', ), read_permission=permissions.PERMISSION_STUDENT, ), ), ) # Use a custom page template for viewing. actions = ({ 'id': 'view', 'action': 'string:${object_url}/ecq_selectionanswer_view', }, ) meta_type = 'ECQSelectionAnswer' # zope type name portal_type = meta_type # plone type name archetype_name = 'Selection Answer' # friendly type name # Register this type in Zope registerTypeLogged(ECQSelectionAnswer)
#security.declareProtected(PERMISSION_STUDENT, 'getScoreForEdit') def getScoreForEdit(self): # no docstring prevents publishing # # Edit accessor for the `score' field. Converts the stored score # into a localized representation. # # FIXME: check permissions: only return something to # candidates if we're in resultView number = self.getScorePrivate() mctool = getToolByName(self, 'ecq_tool') for_edit = mctool.localizeNumber('%f', number) for_edit = for_edit.rstrip('0') # make sure it doesn't end with the decimal separator if not for_edit[-1].isdigit(): for_edit = for_edit + '0' # appedn the percent sign for_edit += '%' return for_edit security.declareProtected(permissions.PERMISSION_STUDENT, 'getScore') def getScore(self, *args, **kwargs): # no docstring prevents publishing # FIXME: check permissions: only return something if we're in resultView return self.getScorePrivate(*args, **kwargs) # Register this type in Zope registerTypeLogged(ECQScaleAnswer)
) # Use a custom page template for viewing. actions = ( { 'id': 'view', 'action': 'string:${object_url}/ecq_correctanswer_view', }, ) meta_type = 'ECQCorrectAnswer' # zope type name portal_type = meta_type # plone type name archetype_name = 'Correct Answer' # friendly type name security = ClassSecurityInfo() security.declareProtected(PERMISSION_STUDENT, 'isCorrect') def isCorrect(self, *args, **kwargs): # no docstring prevents publishing #FIXME: check permssions: only return something if we're in resultView return self.isCorrectPrivate(*args, **kwargs) security.declareProtected(PERMISSION_STUDENT, 'getComment') def getComment(self, *args, **kwargs): # no docstring prevents publishing #FIXME: check permssions: only return something if we're in resultView return self.getCommentPrivate(*args, **kwargs) # Register this type in Zope registerTypeLogged(ECQCorrectAnswer)
content_icon = "ecq_answer.png" letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" security = ClassSecurityInfo() security.declarePrivate("manage_afterAdd") def manage_afterAdd(self, item, container): retVal = BaseContent.manage_afterAdd(self, item, container) self.syncResults("add") return retVal security.declarePrivate("manage_beforeDelete") def manage_beforeDelete(self, item, container): retVal = BaseContent.manage_beforeDelete(self, item, container) self.syncResults("delete") return retVal def Answerkey(self): return self.letters[self.contentValues(filter={"portal_type": self.portal_type}).index(self)] def Title(self): return self.archetype_name # Register this type in Zope registerTypeLogged(ECQBaseAnswer)
class ECQMCAnswer(ECQCorrectAnswer): """An answer to a multiple-choice question.""" schema = ECQCorrectAnswer.schema.copy() schema['id'].read_permission = permissions.PERMISSION_STUDENT schema['answer'].read_permission = permissions.PERMISSION_STUDENT meta_type = 'ECQMCAnswer' # zope type name portal_type = meta_type # plone type name archetype_name = 'MC Answer' # friendly type name # Use the portal_factory for this type. The portal_factory tool # allows users to initiate the creation objects in such a way # that if they do not complete an edit form, no object is created # in the ZODB. # # This attribute is evaluated by the Extensions/Install.py script. use_portal_factory = True security = ClassSecurityInfo() #security.declareProtected(permissions.PERMISSION_STUDENT, 'getId') #security.declareProtected(PERMISSION_STUDENT, 'getAnswer') # Register this type in Zope registerTypeLogged(ECQMCAnswer)