def test_folderMove( self ): # # Does the catalog stay synched when folders are moved? # test = self.root.test self.root._setObject( 'portal_types', TypesTool() ) types_tool = self.root.portal_types self.root._setObject( 'portal_catalog', CatalogTool() ) catalog = self.root.portal_catalog assert len( catalog ) == 0 test._setObject( 'folder', PortalFolder( 'folder', '' ) ) folder = test.folder folder._setObject( 'sub', PortalFolder( 'sub', '' ) ) sub = folder.sub sub._setObject( 'foo', DummyContent( 'foo', catalog=1 ) ) foo = sub.foo assert len( catalog ) == 1 assert 'foo' in catalog.uniqueValuesFor( 'id' ) assert has_path( catalog._catalog, '/test/folder/sub/foo' ) # WAAAA! must get _p_jar set old, sub._p_jar = sub._p_jar, self.root._p_jar try: folder.manage_renameObject( id='sub', new_id='new_sub' ) finally: sub._p_jar = old assert 'foo' in catalog.uniqueValuesFor( 'id' ) assert len( catalog ) == 1 assert has_path( catalog._catalog, '/test/folder/new_sub/foo' ) folder._setObject( 'bar', DummyContent( 'bar', catalog=1 ) ) bar = folder.bar assert 'bar' in catalog.uniqueValuesFor( 'id' ) assert len( catalog ) == 2 assert has_path( catalog._catalog, '/test/folder/bar' ) folder._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = folder.sub2 # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) # WAAAA! must get _p_jar set old, bar._p_jar = sub._p_jar, self.root._p_jar try: cookie = folder.manage_cutObjects( ids=['bar'] ) sub2.manage_pasteObjects( cookie ) finally: bar._p_jar = old assert 'foo' in catalog.uniqueValuesFor( 'id' ) assert 'bar' in catalog.uniqueValuesFor( 'id' ) assert len( catalog ) == 2 assert has_path( catalog._catalog, '/test/folder/sub2/bar' )
def test_folderMove(self): # # Does the catalog stay synched when folders are moved? # test = self.root.test self.root._setObject('portal_types', TypesTool()) types_tool = self.root.portal_types self.root._setObject('portal_catalog', CatalogTool()) catalog = self.root.portal_catalog assert len(catalog) == 0 test._setObject('folder', PortalFolder('folder', '')) folder = test.folder folder._setObject('sub', PortalFolder('sub', '')) sub = folder.sub sub._setObject('foo', DummyContent('foo', catalog=1)) foo = sub.foo assert len(catalog) == 1 assert 'foo' in catalog.uniqueValuesFor('id') assert has_path(catalog._catalog, '/test/folder/sub/foo') # WAAAA! must get _p_jar set old, sub._p_jar = sub._p_jar, self.root._p_jar try: folder.manage_renameObject(id='sub', new_id='new_sub') finally: sub._p_jar = old assert 'foo' in catalog.uniqueValuesFor('id') assert len(catalog) == 1 assert has_path(catalog._catalog, '/test/folder/new_sub/foo') folder._setObject('bar', DummyContent('bar', catalog=1)) bar = folder.bar assert 'bar' in catalog.uniqueValuesFor('id') assert len(catalog) == 2 assert has_path(catalog._catalog, '/test/folder/bar') folder._setObject('sub2', PortalFolder('sub2', '')) sub2 = folder.sub2 # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend(sub2.all_meta_types) sub2.all_meta_types.extend(extra_meta_types()) # WAAAA! must get _p_jar set old, bar._p_jar = sub._p_jar, self.root._p_jar try: cookie = folder.manage_cutObjects(ids=['bar']) sub2.manage_pasteObjects(cookie) finally: bar._p_jar = old assert 'foo' in catalog.uniqueValuesFor('id') assert 'bar' in catalog.uniqueValuesFor('id') assert len(catalog) == 2 assert has_path(catalog._catalog, '/test/folder/sub2/bar')
def test_folderMove( self ): # # Does the catalog stay synched when folders are moved? # from Products.CMFCore.PortalFolder import PortalFolder test = self.root.test self.root._setObject( 'portal_types', TypesTool() ) types_tool = self.root.portal_types self.root._setObject( 'portal_catalog', CatalogTool() ) catalog = self.root.portal_catalog assert len( catalog ) == 0 test._setObject( 'folder', PortalFolder( 'folder', '' ) ) folder = test.folder folder._setObject( 'sub', PortalFolder( 'sub', '' ) ) sub = folder.sub sub._setObject( 'foo', DummyContent( 'foo', catalog=1 ) ) foo = sub.foo assert len( catalog ) == 1 assert 'foo' in catalog.uniqueValuesFor( 'id' ) assert has_path( catalog._catalog, '/test/folder/sub/foo' ) # WAAAA! must get _p_jar set # XXX This is broken with ZODB 3.3+, use a subtransaction # old, sub._p_jar = sub._p_jar, self.root._p_jar get_transaction().commit(1) folder.manage_renameObject( id='sub', new_id='new_sub' ) assert 'foo' in catalog.uniqueValuesFor( 'id' ) assert len( catalog ) == 1 assert has_path( catalog._catalog, '/test/folder/new_sub/foo' ) folder._setObject( 'bar', DummyContent( 'bar', catalog=1 ) ) bar = folder.bar assert 'bar' in catalog.uniqueValuesFor( 'id' ) assert len( catalog ) == 2 assert has_path( catalog._catalog, '/test/folder/bar' ) folder._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = folder.sub2 # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) # WAAAA! must get _p_jar set # XXX This is broken with ZODB 3.3+, use a subtransaction # old, bar._p_jar = sub._p_jar, self.root._p_jar get_transaction().commit(1) cookie = folder.manage_cutObjects( ids=['bar'] ) sub2.manage_pasteObjects( cookie ) assert 'foo' in catalog.uniqueValuesFor( 'id' ) assert 'bar' in catalog.uniqueValuesFor( 'id' ) assert len( catalog ) == 2 assert has_path( catalog._catalog, '/test/folder/sub2/bar' )
def test_contentPaste(self): # # Does copy / paste work? # sm = getSiteManager(self.site) ctool = self.site._setObject( 'portal_catalog', CatalogTool() ) sm.registerUtility(ctool, ICatalogTool) ttool = self.site._setObject( 'portal_types', TypesTool() ) sm.registerUtility(ttool, ITypesTool) fti = FTIDATA_DUMMY[0].copy() ttool._setObject( 'Dummy Content', FTI(**fti) ) sub1 = self._makeOne('sub1') sub2 = self._makeOne('sub2') sub3 = self._makeOne('sub3') self.assertEqual( len(ctool), 0 ) sub1._setObject( 'dummy', DummyContent( 'dummy', catalog=1 ) ) self.failUnless( 'dummy' in sub1.objectIds() ) self.failUnless( 'dummy' in sub1.contentIds() ) self.failIf( 'dummy' in sub2.objectIds() ) self.failIf( 'dummy' in sub2.contentIds() ) self.failIf( 'dummy' in sub3.objectIds() ) self.failIf( 'dummy' in sub3.contentIds() ) self.failUnless( has_path(ctool._catalog, '/bar/site/sub1/dummy') ) self.failIf( has_path(ctool._catalog, '/bar/site/sub2/dummy') ) self.failIf( has_path(ctool._catalog, '/bar/site/sub3/dummy') ) cookie = sub1.manage_copyObjects( ids = ( 'dummy', ) ) # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) sub2.manage_pasteObjects( cookie ) self.failUnless( 'dummy' in sub1.objectIds() ) self.failUnless( 'dummy' in sub1.contentIds() ) self.failUnless( 'dummy' in sub2.objectIds() ) self.failUnless( 'dummy' in sub2.contentIds() ) self.failIf( 'dummy' in sub3.objectIds() ) self.failIf( 'dummy' in sub3.contentIds() ) self.failUnless( has_path(ctool._catalog, '/bar/site/sub1/dummy') ) self.failUnless( has_path(ctool._catalog, '/bar/site/sub2/dummy') ) self.failIf( has_path(ctool._catalog, '/bar/site/sub3/dummy') ) transaction.savepoint(optimistic=True) cookie = sub1.manage_cutObjects( ids = ('dummy',) ) # Waaa! force sub2 to allow paste of Dummy object. sub3.all_meta_types = [] sub3.all_meta_types.extend(sub3.all_meta_types) sub3.all_meta_types.extend( extra_meta_types() ) sub3.manage_pasteObjects(cookie) self.failIf( 'dummy' in sub1.objectIds() ) self.failIf( 'dummy' in sub1.contentIds() ) self.failUnless( 'dummy' in sub2.objectIds() ) self.failUnless( 'dummy' in sub2.contentIds() ) self.failUnless( 'dummy' in sub3.objectIds() ) self.failUnless( 'dummy' in sub3.contentIds() ) self.failIf( has_path(ctool._catalog, '/bar/site/sub1/dummy') ) self.failUnless( has_path(ctool._catalog, '/bar/site/sub2/dummy') ) self.failUnless( has_path(ctool._catalog, '/bar/site/sub3/dummy') )
def test_folderMove(self): # # Does the catalog stay synched when folders are moved? # test = self.root.test self.root._setObject('portal_types', TypesTool()) types_tool = self.root.portal_types self.root._setObject('portal_catalog', CatalogTool()) catalog = self.root.portal_catalog assert len(catalog) == 0 test._setObject('folder', PortalFolder('folder', '')) folder = test.folder folder._setObject('sub', PortalFolder('sub', '')) sub = folder.sub sub._setObject('foo', DummyContent('foo', catalog=1)) foo = sub.foo assert len(catalog) == 1 self.failUnless('foo' in catalog.uniqueValuesFor('getId')) assert has_path(catalog._catalog, '/test/folder/sub/foo') get_transaction().commit(1) folder.manage_renameObject(id='sub', new_id='new_sub') self.failUnless('foo' in catalog.uniqueValuesFor('getId')) assert len(catalog) == 1 assert has_path(catalog._catalog, '/test/folder/new_sub/foo') folder._setObject('bar', DummyContent('bar', catalog=1)) bar = folder.bar self.failUnless('bar' in catalog.uniqueValuesFor('getId')) assert len(catalog) == 2 assert has_path(catalog._catalog, '/test/folder/bar') folder._setObject('sub2', PortalFolder('sub2', '')) sub2 = folder.sub2 # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend(sub2.all_meta_types) sub2.all_meta_types.extend(extra_meta_types()) get_transaction().commit(1) cookie = folder.manage_cutObjects(ids=['bar']) sub2.manage_pasteObjects(cookie) self.failUnless('foo' in catalog.uniqueValuesFor('getId')) self.failUnless('bar' in catalog.uniqueValuesFor('getId')) assert len(catalog) == 2 assert has_path(catalog._catalog, '/test/folder/sub2/bar')
def test_folderMove( self ): # # Does the catalog stay synched when folders are moved? # test = self.root.test self.root._setObject( 'portal_types', TypesTool() ) types_tool = self.root.portal_types self.root._setObject( 'portal_catalog', CatalogTool() ) catalog = self.root.portal_catalog assert len( catalog ) == 0 test._setObject( 'folder', PortalFolder( 'folder', '' ) ) folder = test.folder folder._setObject( 'sub', PortalFolder( 'sub', '' ) ) sub = folder.sub sub._setObject( 'foo', DummyContent( 'foo', catalog=1 ) ) foo = sub.foo assert len( catalog ) == 1 self.failUnless( 'foo' in catalog.uniqueValuesFor('getId') ) assert has_path( catalog._catalog, '/test/folder/sub/foo' ) get_transaction().commit(1) folder.manage_renameObject(id='sub', new_id='new_sub') self.failUnless( 'foo' in catalog.uniqueValuesFor('getId') ) assert len( catalog ) == 1 assert has_path( catalog._catalog, '/test/folder/new_sub/foo' ) folder._setObject( 'bar', DummyContent( 'bar', catalog=1 ) ) bar = folder.bar self.failUnless( 'bar' in catalog.uniqueValuesFor('getId') ) assert len( catalog ) == 2 assert has_path( catalog._catalog, '/test/folder/bar' ) folder._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = folder.sub2 # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) get_transaction().commit(1) cookie = folder.manage_cutObjects(ids=['bar']) sub2.manage_pasteObjects(cookie) self.failUnless( 'foo' in catalog.uniqueValuesFor('getId') ) self.failUnless( 'bar' in catalog.uniqueValuesFor('getId') ) assert len( catalog ) == 2 assert has_path( catalog._catalog, '/test/folder/sub2/bar' )
def test_folderMove(self): # # Does the catalog stay synched when folders are moved? # from Products.CMFCore.PortalFolder import PortalFolder sm = getSiteManager(self.site) ttool = self.site._setObject( 'portal_types', TypesTool() ) sm.registerUtility(ttool, ITypesTool) ctool = self.site._setObject( 'portal_catalog', CatalogTool() ) sm.registerUtility(ctool, ICatalogTool) ctool.addIndex('getId', 'FieldIndex') self.assertEqual( len(ctool), 0 ) folder = self._makeOne('folder') folder._setObject( 'sub', PortalFolder( 'sub', '' ) ) folder.sub._setObject( 'foo', DummyContent( 'foo', catalog=1 ) ) self.assertEqual( len(ctool), 1 ) self.failUnless( 'foo' in ctool.uniqueValuesFor('getId') ) self.failUnless( has_path(ctool._catalog, '/bar/site/folder/sub/foo') ) transaction.savepoint(optimistic=True) folder.manage_renameObject(id='sub', new_id='new_sub') self.assertEqual( len(ctool), 1 ) self.failUnless( 'foo' in ctool.uniqueValuesFor('getId') ) self.failUnless( has_path(ctool._catalog, '/bar/site/folder/new_sub/foo') ) folder._setObject( 'bar', DummyContent( 'bar', catalog=1 ) ) self.assertEqual( len(ctool), 2 ) self.failUnless( 'bar' in ctool.uniqueValuesFor('getId') ) self.failUnless( has_path(ctool._catalog, '/bar/site/folder/bar') ) folder._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = folder.sub2 # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) transaction.savepoint(optimistic=True) cookie = folder.manage_cutObjects(ids=['bar']) sub2.manage_pasteObjects(cookie) self.failUnless( 'foo' in ctool.uniqueValuesFor('getId') ) self.failUnless( 'bar' in ctool.uniqueValuesFor('getId') ) self.assertEqual( len(ctool), 2 ) self.failUnless( has_path(ctool._catalog, '/bar/site/folder/sub2/bar') )
def test_itemCataloguing(self): test = self.root.test catalog = self.catalog_tool._catalog test.allow_discussion = 1 assert len(self.catalog_tool) == 1 assert has_path(catalog, test.getPhysicalPath()) talkback = self.discussion_tool.getDiscussionFor(test) assert talkback.getPhysicalPath() == ( '', 'test', 'talkback' ), \ talkback.getPhysicalPath() talkback.createReply(title='test', text='blah') assert len(self.catalog_tool) == 2 for reply in talkback.getReplies(): assert has_path(catalog, reply.getPhysicalPath()) assert has_path(catalog, '/test/talkback/%s' % reply.getId()) reply1 = talkback.getReplies()[0] talkback1 = self.discussion_tool.getDiscussionFor(reply1) talkback1.createReply(title='test2', text='blah2') for reply in talkback.getReplies(): assert has_path(catalog, reply.getPhysicalPath()) assert has_path(catalog, '/test/talkback/%s' % reply.getId()) for reply in talkback1.getReplies(): assert has_path(catalog, reply.getPhysicalPath()) assert has_path(catalog, '/test/talkback/%s' % reply.getId())
def test_itemCataloguing( self ): ctool = self.site._setObject( 'portal_catalog', CatalogTool() ) dtool = self.site.portal_discussion catalog = ctool._catalog test = self._makeDummyContent('test', catalog=1) test.allow_discussion = 1 self.assertEqual( len(ctool), 1 ) self.failUnless( has_path( catalog, test.getPhysicalPath() ) ) talkback = dtool.getDiscussionFor(test) self.assertEqual( talkback.getPhysicalPath(), ('', 'bar', 'site', 'test', 'talkback') ) talkback.createReply( title='test' , text='blah' ) self.assertEqual( len(ctool), 2 ) for reply in talkback.getReplies(): self.failUnless( has_path( catalog, reply.getPhysicalPath() ) ) self.failUnless( has_path( catalog, '/bar/site/test/talkback/%s' % reply.getId() ) ) reply1 = talkback.getReplies()[0] talkback1 = dtool.getDiscussionFor(reply1) talkback1.createReply( title='test2' , text='blah2' ) for reply in talkback.getReplies(): self.failUnless( has_path( catalog, reply.getPhysicalPath() ) ) self.failUnless( has_path( catalog, '/bar/site/test/talkback/%s' % reply.getId() ) ) for reply in talkback1.getReplies(): self.failUnless( has_path( catalog, reply.getPhysicalPath() ) ) self.failUnless( has_path( catalog, '/bar/site/test/talkback/%s' % reply.getId() ) )
def test_itemCataloguing(self): ctool = self.site._setObject('portal_catalog', CatalogTool()) dtool = self.site.portal_discussion catalog = ctool._catalog test = self._makeDummyContent('test', catalog=1) test.allow_discussion = 1 self.assertEqual(len(ctool), 1) self.failUnless(has_path(catalog, test.getPhysicalPath())) talkback = dtool.getDiscussionFor(test) self.assertEqual(talkback.getPhysicalPath(), ('', 'bar', 'site', 'test', 'talkback')) talkback.createReply(title='test', text='blah') self.assertEqual(len(ctool), 2) for reply in talkback.getReplies(): self.failUnless(has_path(catalog, reply.getPhysicalPath())) self.failUnless( has_path(catalog, '/bar/site/test/talkback/%s' % reply.getId())) reply1 = talkback.getReplies()[0] talkback1 = dtool.getDiscussionFor(reply1) talkback1.createReply(title='test2', text='blah2') for reply in talkback.getReplies(): self.failUnless(has_path(catalog, reply.getPhysicalPath())) self.failUnless( has_path(catalog, '/bar/site/test/talkback/%s' % reply.getId())) for reply in talkback1.getReplies(): self.failUnless(has_path(catalog, reply.getPhysicalPath())) self.failUnless( has_path(catalog, '/bar/site/test/talkback/%s' % reply.getId()))
def test_itemCataloguing( self ): test = self.root.test catalog = self.catalog_tool._catalog test.allow_discussion = 1 assert len( self.catalog_tool ) == 1 assert has_path( catalog, test.getPhysicalPath() ) talkback = self.discussion_tool.getDiscussionFor( test ) assert talkback.getPhysicalPath() == ( '', 'test', 'talkback' ), \ talkback.getPhysicalPath() talkback.createReply( title='test' , text='blah' ) assert len( self.catalog_tool ) == 2 for reply in talkback.getReplies(): assert has_path( catalog, reply.getPhysicalPath() ) assert has_path( catalog , '/test/talkback/%s' % reply.getId() ) reply1 = talkback.getReplies()[0] talkback1 = self.discussion_tool.getDiscussionFor( reply1 ) talkback1.createReply( title='test2' , text='blah2' ) for reply in talkback.getReplies(): assert has_path( catalog, reply.getPhysicalPath() ) assert has_path( catalog , '/test/talkback/%s' % reply.getId() ) for reply in talkback1.getReplies(): assert has_path( catalog, reply.getPhysicalPath() ) assert has_path( catalog , '/test/talkback/%s' % reply.getId() )
def test_contentPaste( self ): # # Does copy / paste work? # #import pdb; pdb.set_trace() test = self.root.test self.root._setObject( 'portal_types', TypesTool() ) types_tool = self.root.portal_types types_tool._setObject( 'Dummy', DummyFTI ) self.root._setObject( 'portal_catalog', CatalogTool() ) catalog = self.root.portal_catalog assert len( catalog ) == 0 test._setObject( 'sub1', PortalFolder( 'sub1', '' ) ) sub1 = test.sub1 test._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = test.sub2 test._setObject( 'sub3', PortalFolder( 'sub3', '' ) ) sub3 = test.sub3 sub1._setObject( 'dummy', DummyContent( 'dummy', catalog=1 ) ) assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert not 'dummy' in sub2.objectIds() assert not 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path( catalog._catalog, '/test/sub1/dummy' ) assert not has_path( catalog._catalog, '/test/sub2/dummy' ) assert not has_path( catalog._catalog, '/test/sub3/dummy' ) cookie = sub1.manage_copyObjects( ids = ( 'dummy', ) ) # Waaa! force sub2 to allow paste of Dummy object. #import pdb; pdb.set_trace() sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) sub2.manage_pasteObjects( cookie ) assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path( catalog._catalog, '/test/sub1/dummy' ) assert has_path( catalog._catalog, '/test/sub2/dummy' ) assert not has_path( catalog._catalog, '/test/sub3/dummy' ) cookie = sub1.manage_cutObjects( ids = ( 'dummy', ) ) # Waaa! force sub2 to allow paste of Dummy object. sub3.all_meta_types = [] sub3.all_meta_types.extend( sub3.all_meta_types ) sub3.all_meta_types.extend( extra_meta_types() ) sub3.manage_pasteObjects( cookie ) assert not 'dummy' in sub1.objectIds() assert not 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert 'dummy' in sub3.objectIds() assert 'dummy' in sub3.contentIds() assert not has_path( catalog._catalog, '/test/sub1/dummy' ) assert has_path( catalog._catalog, '/test/sub2/dummy' ) assert has_path( catalog._catalog, '/test/sub3/dummy' )
def test_contentPaste(self): # # Does copy / paste work? # test = self.root.test self.root._setObject('portal_types', TypesTool()) types_tool = self.root.portal_types types_tool._setObject('Dummy Content', DummyFTI) self.root._setObject('portal_catalog', CatalogTool()) catalog = self.root.portal_catalog assert len(catalog) == 0 test._setObject('sub1', PortalFolder('sub1', '')) sub1 = test.sub1 test._setObject('sub2', PortalFolder('sub2', '')) sub2 = test.sub2 test._setObject('sub3', PortalFolder('sub3', '')) sub3 = test.sub3 sub1._setObject('dummy', DummyContent('dummy', catalog=1)) dummy = sub1.dummy assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert not 'dummy' in sub2.objectIds() assert not 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path(catalog._catalog, '/test/sub1/dummy') assert not has_path(catalog._catalog, '/test/sub2/dummy') assert not has_path(catalog._catalog, '/test/sub3/dummy') cookie = sub1.manage_copyObjects(ids=('dummy', )) # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend(sub2.all_meta_types) sub2.all_meta_types.extend(extra_meta_types()) sub2.manage_pasteObjects(cookie) assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path(catalog._catalog, '/test/sub1/dummy') assert has_path(catalog._catalog, '/test/sub2/dummy') assert not has_path(catalog._catalog, '/test/sub3/dummy') # WAAAA! must get _p_jar set old, dummy._p_jar = dummy._p_jar, self.root._p_jar try: cookie = sub1.manage_cutObjects(ids=('dummy', )) # Waaa! force sub2 to allow paste of Dummy object. sub3.all_meta_types = [] sub3.all_meta_types.extend(sub3.all_meta_types) sub3.all_meta_types.extend(extra_meta_types()) sub3.manage_pasteObjects(cookie) finally: dummy._p_jar = old assert not 'dummy' in sub1.objectIds() assert not 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert 'dummy' in sub3.objectIds() assert 'dummy' in sub3.contentIds() assert not has_path(catalog._catalog, '/test/sub1/dummy') assert has_path(catalog._catalog, '/test/sub2/dummy') assert has_path(catalog._catalog, '/test/sub3/dummy')
def test_contentPaste(self): # # Does copy / paste work? # test = self.root.test self.root._setObject('portal_types', TypesTool()) types_tool = self.root.portal_types fti = FTIDATA_DUMMY[0].copy() types_tool._setObject('Dummy Content', FTI(**fti)) self.root._setObject('portal_catalog', CatalogTool()) catalog = self.root.portal_catalog assert len(catalog) == 0 test._setObject('sub1', PortalFolder('sub1', '')) sub1 = test.sub1 test._setObject('sub2', PortalFolder('sub2', '')) sub2 = test.sub2 test._setObject('sub3', PortalFolder('sub3', '')) sub3 = test.sub3 sub1._setObject('dummy', DummyContent('dummy', catalog=1)) dummy = sub1.dummy assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert not 'dummy' in sub2.objectIds() assert not 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path(catalog._catalog, '/test/sub1/dummy') assert not has_path(catalog._catalog, '/test/sub2/dummy') assert not has_path(catalog._catalog, '/test/sub3/dummy') cookie = sub1.manage_copyObjects(ids=('dummy', )) # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend(sub2.all_meta_types) sub2.all_meta_types.extend(extra_meta_types()) sub2.manage_pasteObjects(cookie) assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path(catalog._catalog, '/test/sub1/dummy') assert has_path(catalog._catalog, '/test/sub2/dummy') assert not has_path(catalog._catalog, '/test/sub3/dummy') get_transaction().commit(1) cookie = sub1.manage_cutObjects(ids=('dummy', )) # Waaa! force sub2 to allow paste of Dummy object. sub3.all_meta_types = [] sub3.all_meta_types.extend(sub3.all_meta_types) sub3.all_meta_types.extend(extra_meta_types()) sub3.manage_pasteObjects(cookie) assert not 'dummy' in sub1.objectIds() assert not 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert 'dummy' in sub3.objectIds() assert 'dummy' in sub3.contentIds() assert not has_path(catalog._catalog, '/test/sub1/dummy') assert has_path(catalog._catalog, '/test/sub2/dummy') assert has_path(catalog._catalog, '/test/sub3/dummy')
def test_contentPaste( self ): # # Does copy / paste work? # from Products.CMFCore.PortalFolder import PortalFolder test = self.root.test self.root._setObject( 'portal_types', TypesTool() ) types_tool = self.root.portal_types types_tool._setObject( 'Dummy Content', DummyFTI ) self.root._setObject( 'portal_catalog', CatalogTool() ) catalog = self.root.portal_catalog assert len( catalog ) == 0 test._setObject( 'sub1', PortalFolder( 'sub1', '' ) ) sub1 = test.sub1 test._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = test.sub2 test._setObject( 'sub3', PortalFolder( 'sub3', '' ) ) sub3 = test.sub3 sub1._setObject( 'dummy', DummyContent( 'dummy', catalog=1 ) ) dummy = sub1.dummy assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert not 'dummy' in sub2.objectIds() assert not 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path( catalog._catalog, '/test/sub1/dummy' ) assert not has_path( catalog._catalog, '/test/sub2/dummy' ) assert not has_path( catalog._catalog, '/test/sub3/dummy' ) cookie = sub1.manage_copyObjects( ids = ( 'dummy', ) ) # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) sub2.manage_pasteObjects( cookie ) assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path( catalog._catalog, '/test/sub1/dummy' ) assert has_path( catalog._catalog, '/test/sub2/dummy' ) assert not has_path( catalog._catalog, '/test/sub3/dummy' ) # WAAAA! must get _p_jar set # XXX This is broken with ZODB 3.3+, use a subtransaction # old, dummy._p_jar = dummy._p_jar, self.root._p_jar get_transaction().commit(1) cookie = sub1.manage_cutObjects( ids = ( 'dummy', ) ) # Waaa! force sub2 to allow paste of Dummy object. sub3.all_meta_types = [] sub3.all_meta_types.extend( sub3.all_meta_types ) sub3.all_meta_types.extend( extra_meta_types() ) sub3.manage_pasteObjects( cookie ) assert not 'dummy' in sub1.objectIds() assert not 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert 'dummy' in sub3.objectIds() assert 'dummy' in sub3.contentIds() assert not has_path( catalog._catalog, '/test/sub1/dummy' ) assert has_path( catalog._catalog, '/test/sub2/dummy' ) assert has_path( catalog._catalog, '/test/sub3/dummy' )
def test_contentPaste( self ): # # Does copy / paste work? # test = self.root.test self.root._setObject( 'portal_types', TypesTool() ) types_tool = self.root.portal_types fti = FTIDATA_DUMMY[0].copy() types_tool._setObject( 'Dummy Content', FTI(**fti) ) self.root._setObject( 'portal_catalog', CatalogTool() ) catalog = self.root.portal_catalog assert len( catalog ) == 0 test._setObject( 'sub1', PortalFolder( 'sub1', '' ) ) sub1 = test.sub1 test._setObject( 'sub2', PortalFolder( 'sub2', '' ) ) sub2 = test.sub2 test._setObject( 'sub3', PortalFolder( 'sub3', '' ) ) sub3 = test.sub3 sub1._setObject( 'dummy', DummyContent( 'dummy', catalog=1 ) ) dummy = sub1.dummy assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert not 'dummy' in sub2.objectIds() assert not 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path( catalog._catalog, '/test/sub1/dummy' ) assert not has_path( catalog._catalog, '/test/sub2/dummy' ) assert not has_path( catalog._catalog, '/test/sub3/dummy' ) cookie = sub1.manage_copyObjects( ids = ( 'dummy', ) ) # Waaa! force sub2 to allow paste of Dummy object. sub2.all_meta_types = [] sub2.all_meta_types.extend( sub2.all_meta_types ) sub2.all_meta_types.extend( extra_meta_types() ) sub2.manage_pasteObjects( cookie ) assert 'dummy' in sub1.objectIds() assert 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert not 'dummy' in sub3.objectIds() assert not 'dummy' in sub3.contentIds() assert has_path( catalog._catalog, '/test/sub1/dummy' ) assert has_path( catalog._catalog, '/test/sub2/dummy' ) assert not has_path( catalog._catalog, '/test/sub3/dummy' ) get_transaction().commit(1) cookie = sub1.manage_cutObjects( ids = ('dummy',) ) # Waaa! force sub2 to allow paste of Dummy object. sub3.all_meta_types = [] sub3.all_meta_types.extend(sub3.all_meta_types) sub3.all_meta_types.extend( extra_meta_types() ) sub3.manage_pasteObjects(cookie) assert not 'dummy' in sub1.objectIds() assert not 'dummy' in sub1.contentIds() assert 'dummy' in sub2.objectIds() assert 'dummy' in sub2.contentIds() assert 'dummy' in sub3.objectIds() assert 'dummy' in sub3.contentIds() assert not has_path( catalog._catalog, '/test/sub1/dummy' ) assert has_path( catalog._catalog, '/test/sub2/dummy' ) assert has_path( catalog._catalog, '/test/sub3/dummy' )