Log message for revision 123221: copy objects using zope.copy (test failing until elro checks in his changes)
Changed: U Zope/branches/elro-parent-pointers/setup.py U Zope/branches/elro-parent-pointers/src/OFS/CopySupport.py U Zope/branches/elro-parent-pointers/src/OFS/configure.zcml U Zope/branches/elro-parent-pointers/src/OFS/tests/testCopySupport.py -=- Modified: Zope/branches/elro-parent-pointers/setup.py =================================================================== --- Zope/branches/elro-parent-pointers/setup.py 2011-10-31 22:44:53 UTC (rev 123220) +++ Zope/branches/elro-parent-pointers/setup.py 2011-10-31 23:08:40 UTC (rev 123221) @@ -79,6 +79,7 @@ 'zope.container', 'zope.contentprovider', 'zope.contenttype', + 'zope.copy', 'zope.deferredimport', 'zope.event', 'zope.exceptions', Modified: Zope/branches/elro-parent-pointers/src/OFS/CopySupport.py =================================================================== --- Zope/branches/elro-parent-pointers/src/OFS/CopySupport.py 2011-10-31 22:44:53 UTC (rev 123220) +++ Zope/branches/elro-parent-pointers/src/OFS/CopySupport.py 2011-10-31 23:08:40 UTC (rev 123221) @@ -18,7 +18,6 @@ from marshal import loads import re import sys -import tempfile from urllib import quote from urllib import unquote import warnings @@ -47,6 +46,7 @@ from zope.lifecycleevent import ObjectCopiedEvent from zope.lifecycleevent import ObjectMovedEvent from zope.container.contained import notifyContainerModified +from zope.copy import copy from OFS.event import ObjectWillBeMovedEvent from OFS.event import ObjectClonedEvent @@ -582,11 +582,7 @@ `container`) # Ask an object for a new copy of itself. - f=tempfile.TemporaryFile() - self._p_jar.exportFile(self._p_oid,f) - f.seek(0) - ob=container._p_jar.importFile(f) - f.close() + ob = copy(aq_base(self)) return ob def _postCopy(self, container, op=0): Modified: Zope/branches/elro-parent-pointers/src/OFS/configure.zcml =================================================================== --- Zope/branches/elro-parent-pointers/src/OFS/configure.zcml 2011-10-31 22:44:53 UTC (rev 123220) +++ Zope/branches/elro-parent-pointers/src/OFS/configure.zcml 2011-10-31 23:08:40 UTC (rev 123221) @@ -4,4 +4,6 @@ <include file="deprecated.zcml"/> <include file="event.zcml"/> + <adapter factory="zope.location.pickling.LocationCopyHook" /> + </configure> Modified: Zope/branches/elro-parent-pointers/src/OFS/tests/testCopySupport.py =================================================================== --- Zope/branches/elro-parent-pointers/src/OFS/tests/testCopySupport.py 2011-10-31 22:44:53 UTC (rev 123220) +++ Zope/branches/elro-parent-pointers/src/OFS/tests/testCopySupport.py 2011-10-31 23:08:40 UTC (rev 123221) @@ -12,6 +12,10 @@ from OFS.Folder import manage_addFolder from OFS.Image import manage_addFile from Testing.makerequest import makerequest +from zope import component +from zope.testing import cleanup +from persistent import Persistent +from zope.location import Location ADD_IMAGES_AND_FILES = 'Add images and files' @@ -62,6 +66,11 @@ s = DemoStorage() return ZODB.DB( s ).open() + +class PersistentLocation(Persistent, Location): + pass + + class CopySupportTestBase(unittest.TestCase): def _initFolders(self): @@ -102,10 +111,16 @@ del self.responseOut del self.root del self.connection + cleanup.cleanUp() + class TestCopySupport( CopySupportTestBase ): def setUp( self ): + from zope.copy.interfaces import ICopyHook + from zope.location.interfaces import ILocation + from zope.location.pickling import LocationCopyHook + component.provideAdapter(LocationCopyHook, (ILocation,), ICopyHook) folder1, folder2 = self._initFolders() @@ -152,6 +167,7 @@ self.folder2.manage_pasteObjects( cookie ) self.assertTrue( 'file' in self.folder1.objectIds() ) self.assertTrue( 'file' in self.folder2.objectIds() ) + self.assertTrue(self.folder2.file.__parent__ is self.folder2) def testCut( self ): self.assertTrue( 'file' in self.folder1.objectIds() ) @@ -169,7 +185,16 @@ self.folder2.manage_pasteObjects(cookie) self.assertTrue('newfile' in self.folder1.objectIds()) self.assertTrue('newfile' in self.folder2.objectIds()) + + def testCopyExcludesNoncontainedObjects(self): + self.app.other_ob = other_ob = PersistentLocation() + self.app.other_ob.__parent__ = self.app + ob = self.folder1.file + ob.other_ob = self.app.other_ob + copied_ob = ob._getCopy(self.folder1) + self.assertTrue(copied_ob.other_ob is other_ob) + def testPasteSingleNotSameID( self ): self.assertTrue( 'file' in self.folder1.objectIds() ) self.assertFalse( 'file' in self.folder2.objectIds() ) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins