def test_events(self): events = [] @adapter(IBeforeTransitionEvent) def _handleBefore(event): events.append(event) provideHandler(_handleBefore) @adapter(IAfterTransitionEvent) def _handleAfter(event): events.append(event) provideHandler(_handleAfter) wftool = self.site.portal_workflow wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) wftool.notifyCreated(dummy) wf.doActionFor(dummy, 'publish', comment='foo', test='bar') self.assertEquals(4, len(events)) evt = events[0] self.failUnless(IBeforeTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('private', evt.new_state.id) self.assertEquals(None, evt.transition) self.assertEquals({}, evt.status) self.assertEquals(None, evt.kwargs) evt = events[1] self.failUnless(IAfterTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('private', evt.new_state.id) self.assertEquals(None, evt.transition) self.assertEquals({}, evt.status) self.assertEquals(None, evt.kwargs) evt = events[2] self.failUnless(IBeforeTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('published', evt.new_state.id) self.assertEquals('publish', evt.transition.id) self.assertEquals({'state': 'private', 'comments': ''}, evt.status) self.assertEquals({'test': 'bar', 'comment': 'foo'}, evt.kwargs) evt = events[3] self.failUnless(IAfterTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('published', evt.new_state.id) self.assertEquals('publish', evt.transition.id) self.assertEquals({'state': 'private', 'comments': ''}, evt.status) self.assertEquals({'test': 'bar', 'comment': 'foo'}, evt.kwargs)
def test_events(self): events = [] @adapter(IBeforeTransitionEvent) def _handleBefore(event): events.append(event) provideHandler(_handleBefore) @adapter(IAfterTransitionEvent) def _handleAfter(event): events.append(event) provideHandler(_handleAfter) wftool = self.site.portal_workflow wf = self._getDummyWorkflow() dummy = self.site._setObject( 'dummy', DummyContent() ) wftool.notifyCreated(dummy) wf.doActionFor(dummy, 'publish', comment='foo', test='bar') self.assertEquals(4, len(events)) evt = events[0] self.failUnless(IBeforeTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('private', evt.new_state.id) self.assertEquals(None, evt.transition) self.assertEquals({}, evt.status) self.assertEquals(None, evt.kwargs) evt = events[1] self.failUnless(IAfterTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('private', evt.new_state.id) self.assertEquals(None, evt.transition) self.assertEquals({}, evt.status) self.assertEquals(None, evt.kwargs) evt = events[2] self.failUnless(IBeforeTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('published', evt.new_state.id) self.assertEquals('publish', evt.transition.id) self.assertEquals({'state': 'private', 'comments': ''}, evt.status) self.assertEquals({'test' : 'bar', 'comment' : 'foo'}, evt.kwargs) evt = events[3] self.failUnless(IAfterTransitionEvent.providedBy(evt)) self.assertEquals(dummy, evt.object) self.assertEquals('private', evt.old_state.id) self.assertEquals('published', evt.new_state.id) self.assertEquals('publish', evt.transition.id) self.assertEquals({'state': 'private', 'comments': ''}, evt.status) self.assertEquals({'test' : 'bar', 'comment' : 'foo'}, evt.kwargs)
def extract_what(self): #Archetypes if IObjectInitializedEvent.providedBy(self.event): return 'created', self.get_object_modified_info() elif IObjectEditedEvent.providedBy(self.event): return 'modified', self.get_object_modified_info() # #TODO: plone.app.iterate # elif ICheckinEvent.providedBy(self.event): # return 'checkedin' # elif ICheckoutEvent.providedBy(self.event): # return 'checkedout' # elif IWorkingCopyDeletedEvent.providedBy(self.event): # return 'workingcopydeleted' # DCWorkflow elif IAfterTransitionEvent.providedBy(self.event): return 'statechanged', self.get_transition_info() # CMFCore (useless) # elif IActionSucceededEvent.providedBy(self.event): # return None # return 'statechanged', self.get_action_succeed_info() # zope # elif IObjectAddedEvent.providedBy(self.event): # return 'added', self.get_object_moved_info() elif IObjectCopiedEvent.providedBy(self.event): return 'copied', self.get_object_copied_info() elif IObjectMovedEvent.providedBy(self.event): return 'moved', self.get_object_moved_info() elif IObjectRemovedEvent.providedBy(self.event): return 'removed', self.get_object_moved_info() elif IObjectModifiedEvent.providedBy(self.event): return 'modified', self.get_object_modified_info() return None, {}
def logEvent(self, ob, event): """ """ msg = ["uid: %s" % ob.UID(), "portal_type: %s" % ob.portal_type] if IAfterTransitionEvent.providedBy(event): if not event.transition: return # Ignore null transitions msg.append("transition: %s" % event.transition.id) if IObjectRemovedEvent.providedBy(event): msg.append("removed: 1\nid: %s\n" % ob.getId()) else: marshaller = ob.Schema().getLayerImpl("marshall") msg.append(marshaller.marshall(ob)[2]) logger.info("\n".join(msg))
def logEvent(self,ob,event): """ """ msg = ['uid: %s' % ob.UID(), 'portal_type: %s' % ob.portal_type, ] if IAfterTransitionEvent.providedBy(event): if not event.transition: return # Ignore null transitions msg.append( "transition: %s" % event.transition.id ) if IObjectRemovedEvent.providedBy(event): msg.append( 'removed: 1\nid: %s\n' % ob.getId() ) else: marshaller = ob.Schema().getLayerImpl('marshall') msg.append( marshaller.marshall(ob)[2] ) logger.info('\n'.join(msg))