[z3-checkins] r19704 - z3/Five/branch/efge-1.3-event-work/tests
efge at codespeak.net
efge at codespeak.net
Thu Nov 10 14:51:22 CET 2005
Author: efge
Date: Thu Nov 10 14:51:22 2005
New Revision: 19704
Modified:
z3/Five/branch/efge-1.3-event-work/tests/event.txt
z3/Five/branch/efge-1.3-event-work/tests/test_event.py
Log:
Better recursion in compatibility mode.
Modified: z3/Five/branch/efge-1.3-event-work/tests/event.txt
==============================================================================
--- z3/Five/branch/efge-1.3-event-work/tests/event.txt (original)
+++ z3/Five/branch/efge-1.3-event-work/tests/event.txt Thu Nov 10 14:51:22 2005
@@ -86,38 +86,69 @@
>>> zcml.load_config('meta.zcml', zope.app.component)
>>> zcml.load_config('event.zcml', Products.Five)
+We need at least one fake deprecated method to tell the compatibility
+framework that component architecture is initialized::
+
+ >>> from Products.Five.eventconfigure import setDeprecatedManageAddDelete
+ >>> class C(object): pass
+ >>> setDeprecatedManageAddDelete(C)
+
Old class
=========
If we use an instance of an old class for which we haven't specified
anything, events are sent and the manage_afterAdd & co methods are
-called but in a "compatibility" way.
-
-Because the bases classes of Zope have been changed to not recurse
-except through the event framework, unexpected behavior may happen
-(however a warning will be sent)::
+called, but with a deprecation warning::
+ >>> sub = MyFolder('sub')
+ >>> folder._setObject('sub', sub)
+ ObjectWillBeAddedEvent sub
+ ObjectAddedEvent sub
+ old manage_afterAdd sub sub folder
+ 'sub'
+ >>> sub = folder.sub
>>> ob = MyContent('dog')
- >>> folder._setObject('dog', ob)
+ >>> sub._setObject('dog', ob)
ObjectWillBeAddedEvent dog
ObjectAddedEvent dog
- old manage_afterAdd dog dog folder
+ old manage_afterAdd dog dog sub
'dog'
-And when we delete the object, manage_beforeDelete is also called and
-events are sent::
+And when we rename the subfolder, manage_beforeDelete is also called
+bottom-up and events are sent::
- >>> folder.manage_delObjects('dog')
- old manage_beforeDelete dog dog folder
- ObjectWillBeRemovedEvent dog
- ObjectRemovedEvent dog
+ >>> folder.manage_renameObject('sub', 'marine')
+ ObjectWillBeMovedEvent sub
+ ObjectWillBeMovedEvent dog
+ old manage_beforeDelete dog sub folder
+ old manage_beforeDelete sub sub folder
+ ObjectMovedEvent marine
+ old manage_afterAdd marine marine folder
+ ObjectMovedEvent dog
+ old manage_afterAdd dog marine folder
+
+Same thing for clone::
+
+ >>> res = folder.manage_clone(folder.marine, 'tank')
+ ObjectCopiedEvent tank
+ ObjectWillBeAddedEvent tank
+ ObjectWillBeAddedEvent dog
+ ObjectAddedEvent tank
+ old manage_afterAdd tank tank folder
+ ObjectAddedEvent dog
+ old manage_afterAdd dog tank folder
+ ObjectClonedEvent tank
+ old manage_afterClone tank tank
+ ObjectClonedEvent dog
+ old manage_afterClone dog tank
+ >>> res.getId()
+ 'tank'
Old class with deprecatedManageAddDelete
========================================
We specifiy that our class is deprecated (using zcml in real life)::
- >>> from Products.Five.eventconfigure import setDeprecatedManageAddDelete
>>> setDeprecatedManageAddDelete(MyContent)
>>> setDeprecatedManageAddDelete(MyFolder)
>>> setDeprecatedManageAddDelete(MyOrderedFolder)
Modified: z3/Five/branch/efge-1.3-event-work/tests/test_event.py
==============================================================================
--- z3/Five/branch/efge-1.3-event-work/tests/test_event.py (original)
+++ z3/Five/branch/efge-1.3-event-work/tests/test_event.py Thu Nov 10 14:51:22 2005
@@ -40,11 +40,17 @@
def manage_afterAdd(self, item, container):
print 'old manage_afterAdd %s %s %s' % (self.getId(), item.getId(),
container.getId())
+ super(NotifyBase, self).manage_afterAdd(item, container)
+ manage_afterAdd.__five_method__ = True # Shut up deprecation warnings
def manage_beforeDelete(self, item, container):
+ super(NotifyBase, self).manage_beforeDelete(item, container)
print 'old manage_beforeDelete %s %s %s' % (self.getId(), item.getId(),
container.getId())
+ manage_beforeDelete.__five_method__ = True # Shut up deprecation warnings
def manage_afterClone(self, item):
print 'old manage_afterClone %s %s' % (self.getId(), item.getId())
+ super(NotifyBase, self).manage_afterClone(item)
+ manage_afterClone.__five_method__ = True # Shut up deprecation warnings
class MyApp(Folder):
def getPhysicalRoot(self):
More information about the z3-checkins
mailing list