Exemple #1
0
    def test_pop_success(self):
        from substanced.interfaces import IObjectEvent
        from substanced.interfaces import IObjectRemoved
        from substanced.interfaces import IObjectWillBeRemoved

        dummy = DummyModel()
        dummy.__parent__ = None
        dummy.__name__ = None
        events = []

        def listener(event, obj, container):
            events.append(event)

        self._registerEventListener(listener, IObjectEvent)
        folder = self._makeOne({"a": dummy})
        result = folder.pop("a")
        self.assertEqual(result, dummy)
        self.assertEqual(folder._num_objects(), 0)
        self.assertEqual(len(events), 2)
        self.assertTrue(IObjectWillBeRemoved.providedBy(events[0]))
        self.assertTrue(IObjectRemoved.providedBy(events[1]))
        self.assertEqual(events[0].object, dummy)
        self.assertEqual(events[0].parent, folder)
        self.assertEqual(events[0].name, "a")
        self.assertEqual(events[1].object, dummy)
        self.assertEqual(events[1].parent, folder)
        self.assertEqual(events[1].name, "a")
        self.assertFalse(hasattr(dummy, "__parent__"))
        self.assertFalse(hasattr(dummy, "__name__"))
Exemple #2
0
def content_added_or_removed(event):
    """ Generates ContentAdded and ContentRemoved audit events """
    if IObjectWillBeRemoved.providedBy(event):
        event_name = 'ContentRemoved'
    elif IObjectAdded.providedBy(event):
        event_name = 'ContentAdded'
    else:
        return False # for testing
    userinfo = get_userinfo()
    eventscribe = AuditScribe(event.object)
    parent = event.parent
    # this is an event related to the *container*, not to the object.
    folder_oid = get_oid(parent, None)
    object_oid = get_oid(event.object, None)
    folder_path = resource_path(parent)
    object_name = event.name
    moving = bool(event.moving)
    loading = bool(event.loading)
    content_type = str(event.registry.content.typeof(event.object))
    eventscribe.add(
        event_name,
        folder_oid,
        object_oid=object_oid,
        folder_oid=folder_oid,
        folder_path=folder_path,
        object_name=object_name,
        content_type=content_type,
        userinfo=userinfo,
        moving=moving,
        loading=loading,
        )
Exemple #3
0
    def test_remove_moving(self):
        from substanced.interfaces import IObjectEvent
        from substanced.interfaces import IObjectRemoved
        from substanced.interfaces import IObjectWillBeRemoved

        events = []

        def listener(event, obj, container):
            events.append(event)  # pragma NO COVER

        self._registerEventListener(listener, IObjectEvent)
        dummy = DummyModel()
        dummy.__parent__ = None
        dummy.__name__ = None
        folder = self._makeOne({"a": dummy})
        self.assertEqual(folder._num_objects(), 1)
        folder.remove("a", moving=True)
        self.assertEqual(folder._num_objects(), 0)
        self.assertFalse(hasattr(dummy, "__parent__"))
        self.assertFalse(hasattr(dummy, "__name__"))
        self.assertEqual(len(events), 2)
        self.assertTrue(IObjectWillBeRemoved.providedBy(events[0]))
        self.assertTrue(IObjectRemoved.providedBy(events[1]))
        self.assertEqual(events[0].object, dummy)
        self.assertEqual(events[0].parent, folder)
        self.assertEqual(events[0].name, "a")
        self.assertTrue(events[0].moving)
        self.assertEqual(events[1].object, dummy)
        self.assertEqual(events[1].parent, folder)
        self.assertEqual(events[1].name, "a")
        self.assertTrue(events[1].moving)
Exemple #4
0
    def test_pop_success(self):
        from substanced.interfaces import IObjectEvent
        from substanced.interfaces import IObjectRemoved
        from substanced.interfaces import IObjectWillBeRemoved
        dummy = DummyModel()
        dummy.__parent__ = None
        dummy.__name__ = None
        events = []

        def listener(event, obj, container):
            events.append(event)

        self._registerEventListener(listener, IObjectEvent)
        folder = self._makeOne({'a': dummy})
        result = folder.pop('a')
        self.assertEqual(result, dummy)
        self.assertEqual(folder._num_objects(), 0)
        self.assertEqual(len(events), 2)
        self.assertTrue(IObjectWillBeRemoved.providedBy(events[0]))
        self.assertTrue(IObjectRemoved.providedBy(events[1]))
        self.assertEqual(events[0].object, dummy)
        self.assertEqual(events[0].parent, folder)
        self.assertEqual(events[0].name, 'a')
        self.assertEqual(events[1].object, dummy)
        self.assertEqual(events[1].parent, folder)
        self.assertEqual(events[1].name, 'a')
        self.assertFalse(hasattr(dummy, '__parent__'))
        self.assertFalse(hasattr(dummy, '__name__'))
Exemple #5
0
    def test_remove_moving(self):
        from substanced.interfaces import IObjectEvent
        from substanced.interfaces import IObjectRemoved
        from substanced.interfaces import IObjectWillBeRemoved
        events = []

        def listener(event, obj, container):
            events.append(event)  #pragma NO COVER

        self._registerEventListener(listener, IObjectEvent)
        dummy = DummyModel()
        dummy.__parent__ = None
        dummy.__name__ = None
        folder = self._makeOne({'a': dummy})
        self.assertEqual(folder._num_objects(), 1)
        folder.remove('a', moving=True)
        self.assertEqual(folder._num_objects(), 0)
        self.assertFalse(hasattr(dummy, '__parent__'))
        self.assertFalse(hasattr(dummy, '__name__'))
        self.assertEqual(len(events), 2)
        self.assertTrue(IObjectWillBeRemoved.providedBy(events[0]))
        self.assertTrue(IObjectRemoved.providedBy(events[1]))
        self.assertEqual(events[0].object, dummy)
        self.assertEqual(events[0].parent, folder)
        self.assertEqual(events[0].name, 'a')
        self.assertTrue(events[0].moving)
        self.assertEqual(events[1].object, dummy)
        self.assertEqual(events[1].parent, folder)
        self.assertEqual(events[1].name, 'a')
        self.assertTrue(events[1].moving)
Exemple #6
0
def content_added_or_removed(event):
    """ Generates ContentAdded and ContentRemoved audit events """
    if IObjectWillBeRemoved.providedBy(event):
        event_name = 'ContentRemoved'
    elif IObjectAdded.providedBy(event):
        event_name = 'ContentAdded'
    else:
        return False  # for testing
    userinfo = get_userinfo()
    eventscribe = AuditScribe(event.object)
    parent = event.parent
    # this is an event related to the *container*, not to the object.
    folder_oid = get_oid(parent, None)
    object_oid = get_oid(event.object, None)
    folder_path = resource_path(parent)
    object_name = event.name
    moving = bool(event.moving)
    loading = bool(event.loading)
    content_type = str(event.registry.content.typeof(event.object))
    eventscribe.add(
        event_name,
        folder_oid,
        object_oid=object_oid,
        folder_oid=folder_oid,
        folder_path=folder_path,
        object_name=object_name,
        content_type=content_type,
        userinfo=userinfo,
        moving=moving,
        loading=loading,
    )
Exemple #7
0
 def test___delitem__(self):
     from substanced.interfaces import IObjectEvent
     from substanced.interfaces import IObjectRemoved
     from substanced.interfaces import IObjectWillBeRemoved
     events = []
     def listener(event, obj, container):
         events.append(event)
     self._registerEventListener(listener, IObjectEvent)
     dummy = DummyModel()
     dummy.__parent__ = None
     dummy.__name__ = None
     folder = self._makeOne({'a': dummy})
     self.assertEqual(folder._num_objects(), 1)
     del folder['a']
     self.assertEqual(folder._num_objects(), 0)
     self.assertEqual(len(events), 2)
     self.assertTrue(IObjectWillBeRemoved.providedBy(events[0]))
     self.assertTrue(IObjectRemoved.providedBy(events[1]))
     self.assertEqual(events[0].object, dummy)
     self.assertEqual(events[0].parent, folder)
     self.assertEqual(events[0].name, 'a')
     self.assertEqual(events[1].object, dummy)
     self.assertEqual(events[1].parent, folder)
     self.assertEqual(events[1].name, 'a')
     self.assertFalse(hasattr(dummy, '__parent__'))
     self.assertFalse(hasattr(dummy, '__name__'))