Example #1
0
    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)
Example #2
0
    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))
Example #5
0
    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))