[z3-checkins] r18964 - in z3/Five/branch/efge-object-event: . tests
efge at codespeak.net
efge at codespeak.net
Tue Oct 25 18:54:31 CEST 2005
Author: efge
Date: Tue Oct 25 18:54:31 2005
New Revision: 18964
Modified:
z3/Five/branch/efge-object-event/event.py
z3/Five/branch/efge-object-event/event.zcml
z3/Five/branch/efge-object-event/tests/event.txt
z3/Five/branch/efge-object-event/tests/test_event.py
Log:
Actually we don't care about _notifyOfCopyTo and _postCopy, as they
don't do recursion by default.
Modified: z3/Five/branch/efge-object-event/event.py
==============================================================================
--- z3/Five/branch/efge-object-event/event.py (original)
+++ z3/Five/branch/efge-object-event/event.py Tue Oct 25 18:54:31 2005
@@ -162,10 +162,12 @@
def callManageAfterAdd(ob, event):
"""Compatibility subscriber for manage_afterAdd.
"""
+ # used for ISimpleItem/IObjectManager, IObjectMovedEvent
if not hasDeprecatedMethods(ob):
return
container = event.newParent
if container is None:
+ # this is a remove
return
if not isFiveMethod(ob.manage_afterAdd):
warnings.warn(
@@ -179,10 +181,12 @@
def callManageBeforeDelete(ob, event):
"""Compatibility subscriber for manage_beforeDelete.
"""
+ # used for ISimpleItem/IObjectManager, IObjectMovedEvent
if not hasDeprecatedMethods(ob):
return
container = event.oldParent
if container is None:
+ # this is an add
return
if not isFiveMethod(ob.manage_beforeDelete):
warnings.warn(
@@ -207,6 +211,7 @@
def callManageAfterClone(ob, event):
"""Compatibility subscriber for manage_afterClone.
"""
+ # used for ISimpleItem/IObjectManager, IObjectMovedEvent
if not hasDeprecatedMethods(ob):
return
if not isFiveMethod(ob.manage_afterClone):
@@ -219,6 +224,7 @@
item = event.object
ob.manage_afterClone(item)
+
##################################################
# Monkey patches
@@ -240,17 +246,6 @@
# A warning is sent by the subscriber
pass
-# From CopyContainer
-def _notifyOfCopyTo(self, container, op=0):
- # A warning is sent by the caller
- pass
-
-# From CopyContainer
-def _postCopy(self, container, op=0):
- # A warning is sent by the caller
- pass
-
-
# XXX other recursive dispatching:
# changeOwnership (called by manage_takeOwnership)
# manage_fixupOwnershipAfterAdd
@@ -411,21 +406,15 @@
raise CopyError, eNotSupported % escape(id)
self._verifyObjectPaste(ob)
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._notifyOfCopyTo):
- warnings.warn(
- "Calling %s._notifyOfCopyTo is deprecated when using Five, "
- "use an IObjectWillBeMovedEvent subscriber "
- "instead." % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- try:
- ob._notifyOfCopyTo(self, op=1)
- except:
- raise CopyError, MessageDialog(
- title='Rename Error',
- message=sys.exc_info()[1],
- action ='manage_main')
+ try:
+ ob._notifyOfCopyTo(self, op=1)
+ except ConflictError:
+ raise
+ except:
+ raise CopyError, MessageDialog(
+ title="Rename Error",
+ message=sys.exc_info()[1],
+ action ='manage_main')
notify(ObjectWillBeMovedEvent(ob, self, id, self, new_id))
@@ -440,15 +429,7 @@
notify(ObjectMovedEvent(ob, self, id, self, new_id))
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._postCopy):
- warnings.warn(
- "Calling %s._postCopy(op=1) is deprecated when using Five, "
- "use an IObjectMovedEvent subscriber instead."
- % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- ob._postCopy(self, op=1)
+ ob._postCopy(self, op=1)
if REQUEST is not None:
return self.manage_main(self, REQUEST, update_menu=1)
@@ -501,16 +482,7 @@
raise CopyError, eNotSupported % escape(orig_id)
try:
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._notifyOfCopyTo):
- warnings.warn(
- "Calling %s._notifyOfCopyTo is deprecated "
- "when using Five, use an IObjectCopiedEvent or "
- "IObjectWillBeAddedEvent subscriber instead."
- % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- ob._notifyOfCopyTo(self, op=0)
+ ob._notifyOfCopyTo(self, op=0)
except ConflictError:
raise
except:
@@ -530,16 +502,7 @@
ob = self._getOb(id)
ob.wl_clearLocks()
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._postCopy):
- warnings.warn(
- "Calling %s._postCopy(op=0) is deprecated "
- "when using Five, "
- "use an IObjectCopiedEvent subscriber instead."
- % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- ob._postCopy(self, op=0)
+ ob._postCopy(self, op=0)
notify(FiveObjectClonedEvent(ob))
@@ -555,16 +518,7 @@
raise CopyError, eNotSupported % escape(orig_id)
try:
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._notifyOfCopyTo):
- warnings.warn(
- "Calling %s._notifyOfCopyTo is deprecated "
- "when using Five, "
- "use an IObjectWillBeMovedEvent subscriber "
- "instead." % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- ob._notifyOfCopyTo(self, op=1)
+ ob._notifyOfCopyTo(self, op=1)
except ConflictError:
raise
except:
@@ -572,6 +526,7 @@
title="Move Error",
message=sys.exc_info()[1],
action='manage_main')
+
if not sanity_check(self, ob):
raise CopyError, "This object cannot be pasted into itself"
@@ -599,16 +554,7 @@
notify(ObjectMovedEvent(ob, orig_container, orig_id,
self, id))
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._postCopy):
- warnings.warn(
- "Calling %s._postCopy(op=1) is deprecated "
- "when using Five, "
- "use an IObjectMovedEvent subscriber instead."
- % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- ob._postCopy(self, op=1)
+ ob._postCopy(self, op=1)
# try to make ownership implicit if possible
ob.manage_changeOwnershipType(explicit=0) # XXX event?
@@ -639,21 +585,15 @@
self._verifyObjectPaste(ob)
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._notifyOfCopyTo):
- warnings.warn(
- "Calling %s._notifyOfCopyTo is deprecated when using Five, "
- "use an IObjectCopiedEvent or IObjectWillBeAddedEvent "
- "subscriber instead." % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- try:
- ob._notifyOfCopyTo(self, op=0)
- except:
- raise CopyError, MessageDialog(
- title='Clone Error',
- message=sys.exc_info()[1],
- action ='manage_main')
+ try:
+ ob._notifyOfCopyTo(self, op=0)
+ except ConflictError:
+ raise
+ except:
+ raise CopyError, MessageDialog(
+ title="Clone Error",
+ message=sys.exc_info()[1],
+ action='manage_main')
ob = ob._getCopy(self)
ob._setId(id)
@@ -662,15 +602,7 @@
self._setObject(id, ob)
ob = self._getOb(id)
- if hasDeprecatedMethods(ob):
- # BBB
- if not isFiveMethod(ob._postCopy):
- warnings.warn(
- "Calling %s._postCopy(op=0) is deprecated when using Five, "
- "use an IObjectCopiedEvent subscriber instead."
- % ob.__class__.__name__,
- DeprecationWarning, stacklevel=2)
- ob._postCopy(self, op=0)
+ ob._postCopy(self, op=0)
notify(FiveObjectClonedEvent(ob))
@@ -712,10 +644,6 @@
patchMethod(BTreeFolder2Base, '_delObject',
BT_delObject)
- patchMethod(CopyContainer, '_notifyOfCopyTo',
- _notifyOfCopyTo)
- patchMethod(CopyContainer, '_postCopy',
- _postCopy)
patchMethod(CopyContainer, 'manage_renameObject',
manage_renameObject)
# XXX also fix OrderSupport._old_manage_renameObject
Modified: z3/Five/branch/efge-object-event/event.zcml
==============================================================================
--- z3/Five/branch/efge-object-event/event.zcml (original)
+++ z3/Five/branch/efge-object-event/event.zcml Tue Oct 25 18:54:31 2005
@@ -77,7 +77,4 @@
factory="zope.app.container.contained.dispatchToSublocations"
/>
- <!-- XXX subscriber (not multi) for _notifOfCopyTo and _postCopy -->
-
-
</configure>
Modified: z3/Five/branch/efge-object-event/tests/event.txt
==============================================================================
--- z3/Five/branch/efge-object-event/tests/event.txt (original)
+++ z3/Five/branch/efge-object-event/tests/event.txt Tue Oct 25 18:54:31 2005
@@ -149,36 +149,28 @@
'tintin'
>>> cp = folder.manage_cutObjects('tintin')
>>> folder.manage_pasteObjects(cp)
- old _notifyOfCopyTo tintin folder 1
old manage_beforeDelete tintin tintin folder
old manage_afterAdd tintin tintin folder
- old _postCopy tintin folder 1
[{'new_id': 'tintin', 'id': 'tintin'}]
And we can copy them.
>>> cp = folder.manage_copyObjects('tintin')
>>> folder.manage_pasteObjects(cp)
- old _notifyOfCopyTo tintin folder 0
old manage_afterAdd copy_of_tintin copy_of_tintin folder
- old _postCopy copy_of_tintin folder 0
old manage_afterClone copy_of_tintin copy_of_tintin
[{'new_id': 'copy_of_tintin', 'id': 'tintin'}]
We can rename objects:
>>> folder.manage_renameObject('copy_of_tintin', 'haddock')
- old _notifyOfCopyTo copy_of_tintin folder 1
old manage_beforeDelete copy_of_tintin copy_of_tintin folder
old manage_afterAdd haddock haddock folder
- old _postCopy haddock folder 1
We can also call manage_clone by hand:
>>> res = folder.manage_clone(folder.tintin, 'tournesol')
- old _notifyOfCopyTo tintin folder 0
old manage_afterAdd tournesol tournesol folder
- old _postCopy tournesol folder 0
old manage_afterClone tournesol tournesol
>>> res.getId()
'tournesol'
@@ -209,30 +201,20 @@
bottom-up.
>>> folder.manage_renameObject('subfolder', 'bob')
- old _notifyOfCopyTo subfolder folder 1
old manage_beforeDelete riri subfolder folder
old manage_beforeDelete subfolder subfolder folder
old manage_afterAdd bob bob folder
old manage_afterAdd riri bob folder
- old _postCopy bob folder 1
- >>> 'bob' in folder.objectIds()
- True
Cloning a tree of objects:
>>> res = folder.manage_clone(folder.bob, 'loulou')
- old _notifyOfCopyTo bob folder 0
old manage_afterAdd loulou loulou folder
old manage_afterAdd riri loulou folder
- old _postCopy loulou folder 0
old manage_afterClone loulou loulou
old manage_afterClone riri loulou
>>> res.getId()
'loulou'
- >>> 'bob' in folder.objectIds()
- True
- >>> 'loulou' in folder.objectIds()
- True
Phase 2
-------
@@ -282,63 +264,43 @@
'blueberry'
>>> cp = folder.manage_cutObjects('blueberry')
>>> folder.manage_pasteObjects(cp)
- old _notifyOfCopyTo blueberry folder 1
ObjectWillBeMovedEvent blueberry
old manage_beforeDelete blueberry blueberry folder
ObjectMovedEvent blueberry
old manage_afterAdd blueberry blueberry folder
- old _postCopy blueberry folder 1
[{'new_id': 'blueberry', 'id': 'blueberry'}]
- >>> 'blueberry' in folder.objectIds()
- True
Old behavior with events for a copy:
>>> cp = folder.manage_copyObjects('blueberry')
>>> folder.manage_pasteObjects(cp)
- old _notifyOfCopyTo blueberry folder 0
ObjectCopiedEvent copy_of_blueberry
ObjectWillBeAddedEvent copy_of_blueberry
ObjectAddedEvent copy_of_blueberry
old manage_afterAdd copy_of_blueberry copy_of_blueberry folder
- old _postCopy copy_of_blueberry folder 0
FiveObjectClonedEvent copy_of_blueberry
old manage_afterClone copy_of_blueberry copy_of_blueberry
[{'new_id': 'copy_of_blueberry', 'id': 'blueberry'}]
- >>> 'blueberry' in folder.objectIds()
- True
- >>> 'copy_of_blueberry' in folder.objectIds()
- True
Old behavior with events for a renaming:
>>> folder.manage_renameObject('copy_of_blueberry', 'myrtille')
- old _notifyOfCopyTo copy_of_blueberry folder 1
ObjectWillBeMovedEvent copy_of_blueberry
old manage_beforeDelete copy_of_blueberry copy_of_blueberry folder
ObjectMovedEvent myrtille
old manage_afterAdd myrtille myrtille folder
- old _postCopy myrtille folder 1
- >>> 'copy_of_blueberry' in folder.objectIds()
- False
- >>> 'myrtille' in folder.objectIds()
- True
Old behavior with events for a clone:
>>> res = folder.manage_clone(folder.blueberry, 'strawberry')
- old _notifyOfCopyTo blueberry folder 0
ObjectCopiedEvent strawberry
ObjectWillBeAddedEvent strawberry
ObjectAddedEvent strawberry
old manage_afterAdd strawberry strawberry folder
- old _postCopy strawberry folder 0
FiveObjectClonedEvent strawberry
old manage_afterClone strawberry strawberry
>>> res.getId()
'strawberry'
- >>> 'strawberry' in folder.objectIds()
- True
Events are also sent when we work with a BTreeFolder:
@@ -374,7 +336,6 @@
bottom-up.
>>> folder.manage_renameObject('subfolder', 'pluto')
- old _notifyOfCopyTo subfolder folder 1
ObjectWillBeMovedEvent subfolder
ObjectWillBeMovedEvent donald
old manage_beforeDelete donald subfolder folder
@@ -383,14 +344,10 @@
old manage_afterAdd pluto pluto folder
ObjectMovedEvent donald
old manage_afterAdd donald pluto folder
- old _postCopy pluto folder 1
- >>> 'pluto' in folder.objectIds()
- True
Cloning a tree of objects:
>>> res = folder.manage_clone(folder.pluto, 'mickey')
- old _notifyOfCopyTo pluto folder 0
ObjectCopiedEvent mickey
ObjectWillBeAddedEvent mickey
ObjectWillBeAddedEvent donald
@@ -398,17 +355,12 @@
old manage_afterAdd mickey mickey folder
ObjectAddedEvent donald
old manage_afterAdd donald mickey folder
- old _postCopy mickey folder 0
FiveObjectClonedEvent mickey
old manage_afterClone mickey mickey
FiveObjectClonedEvent donald
old manage_afterClone donald mickey
>>> res.getId()
'mickey'
- >>> 'pluto' in folder.objectIds()
- True
- >>> 'mickey' in folder.objectIds()
- True
If however we specify using ZCML that our classes can react to events,
the framework won't call manage_afterAdd and manage_beforeDelete
@@ -439,8 +391,6 @@
ObjectWillBeMovedEvent dilbert
ObjectMovedEvent dilbert
[{'new_id': 'dilbert', 'id': 'dilbert'}]
- >>> 'dilbert' in folder.objectIds()
- True
And copy:
@@ -451,18 +401,12 @@
ObjectAddedEvent copy_of_dilbert
FiveObjectClonedEvent copy_of_dilbert
[{'new_id': 'copy_of_dilbert', 'id': 'dilbert'}]
- >>> 'dilbert' in folder.objectIds()
- True
- >>> 'copy_of_dilbert' in folder.objectIds()
- True
Then rename:
>>> folder.manage_renameObject('copy_of_dilbert', 'wally')
ObjectWillBeMovedEvent copy_of_dilbert
ObjectMovedEvent wally
- >>> 'wally' in folder.objectIds()
- True
Or copy using manage_clone:
@@ -473,10 +417,6 @@
FiveObjectClonedEvent phb
>>> res.getId()
'phb'
- >>> 'dilbert' in folder.objectIds()
- True
- >>> 'phb' in folder.objectIds()
- True
Also on a BTreeFolder:
@@ -513,8 +453,6 @@
ObjectWillBeMovedEvent mel
ObjectMovedEvent firefly
ObjectMovedEvent mel
- >>> 'firefly' in folder.objectIds()
- True
Cloning a tree of objects:
@@ -528,10 +466,6 @@
FiveObjectClonedEvent mel
>>> res.getId()
'serenity'
- >>> 'firefly' in folder.objectIds()
- True
- >>> 'serenity' in folder.objectIds()
- True
Now cleanup all the monkey patches:
Modified: z3/Five/branch/efge-object-event/tests/test_event.py
==============================================================================
--- z3/Five/branch/efge-object-event/tests/test_event.py (original)
+++ z3/Five/branch/efge-object-event/tests/test_event.py Tue Oct 25 18:54:31 2005
@@ -34,10 +34,6 @@
return True
def cb_isCopyable(self):
return True
- def _notifyOfCopyTo(self, container, op):
- print 'old _notifyOfCopyTo', self.getId(), container.getId(), op
- def _postCopy(self, container, op):
- print 'old _postCopy', self.getId(), container.getId(), op
def manage_afterAdd(self, item, container):
print 'old manage_afterAdd %s %s %s' % (self.getId(), item.getId(),
container.getId())
More information about the z3-checkins
mailing list