def test_move_content_id_already_in_use(self): """Move a content with an id that is already in use in the target folder. """ factory = self.root.target.manage_addProduct['Silva'] factory.manage_addLink('toc', 'Link to AutoTOC') manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual(mover(self.root.source.toc), None) self.assertFalse('toc' in self.root.source.objectIds()) self.assertTrue('toc' in self.root.target.objectIds()) self.assertTrue('move_of_toc' in self.root.target.objectIds()) self.assertTrue(verifyObject(ILink, self.root.target.toc)) self.assertTrue(verifyObject(IAutoTOC, self.root.target.move_of_toc)) # Now if we move it back, the move_of_ will be stripped manager = IContainerManager(self.root.source) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual(mover(self.root.target.move_of_toc), None) self.assertTrue('toc' in self.root.source.objectIds()) self.assertFalse('move_of_toc' in self.root.target.objectIds()) self.assertTrue(verifyObject(IAutoTOC, self.root.source.toc))
def test_move_content_id_already_in_use(self): """Move a content with an id that is already in use in the target folder. """ factory = self.root.target.manage_addProduct['Silva'] factory.manage_addLink('toc', 'Link to AutoTOC') manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual( mover(self.root.source.toc), None) self.assertFalse('toc' in self.root.source.objectIds()) self.assertTrue('toc' in self.root.target.objectIds()) self.assertTrue('move_of_toc' in self.root.target.objectIds()) self.assertTrue(verifyObject(ILink, self.root.target.toc)) self.assertTrue(verifyObject(IAutoTOC, self.root.target.move_of_toc)) # Now if we move it back, the move_of_ will be stripped manager = IContainerManager(self.root.source) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual( mover(self.root.target.move_of_toc), None) self.assertTrue('toc' in self.root.source.objectIds()) self.assertFalse('move_of_toc' in self.root.target.objectIds()) self.assertTrue(verifyObject(IAutoTOC, self.root.source.toc))
def test_move_content(self): """Move a single item. """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual(mover(self.root.source.toc), None) self.assertFalse('toc' in self.root.source.objectIds()) self.assertTrue('toc' in self.root.target.objectIds()) self.assertTrue(verifyObject(IAutoTOC, self.root.target.toc))
def test_move_content_same_container(self): """Move a single content into the same container than it is already there. """ manager = IContainerManager(self.root.source) with assertNotTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertIsInstance(mover(self.root.source.toc), ContainerError) self.assertTrue('toc' in self.root.source.objectIds())
def test_move_content_same_container(self): """Move a single content into the same container than it is already there. """ manager = IContainerManager(self.root.source) with assertNotTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertIsInstance( mover(self.root.source.toc), ContainerError) self.assertTrue('toc' in self.root.source.objectIds())
def test_move_content(self): """Move a single item. """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual( mover(self.root.source.toc), None) self.assertFalse('toc' in self.root.source.objectIds()) self.assertTrue('toc' in self.root.target.objectIds()) self.assertTrue(verifyObject(IAutoTOC, self.root.target.toc))
def test_move_published_container(self): """Move a single published container. Authors doesn't have the right to do it. """ manager = IContainerManager(self.root.target) with assertNotTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertIsInstance(mover(self.root.source), ContentError) self.assertTrue('source' in self.root.objectIds()) self.assertFalse('source' in self.root.target.objectIds()) self.assertTrue(verifyObject(IFolder, self.root.source))
def test_move_multiple(self): """Move multiple content in one time (one container, one unpublished content). """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual(mover(self.root.source.folder), None) self.assertNotEqual(mover(self.root.source.link), None) self.assertFalse('folder' in self.root.source.objectIds()) self.assertTrue('folder' in self.root.target.objectIds()) self.assertTrue(verifyObject(IFolder, self.root.target.folder)) self.assertFalse('link' in self.root.source.objectIds()) self.assertTrue('link' in self.root.target.objectIds()) self.assertTrue(verifyObject(ILink, self.root.target.link))
def test_move_published_content(self): """Move a single published content. Editors can do it. The link stays published. """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual(mover(self.root.source.published_link), None) self.assertFalse('published_link' in self.root.source.objectIds()) self.assertTrue('published_link' in self.root.target.objectIds()) self.assertTrue(verifyObject(ILink, self.root.target.published_link)) self.assertNotEqual(self.root.target.published_link.get_viewable(), None)
def test_move_published_container(self): """Move a single published container. Authors doesn't have the right to do it. """ manager = IContainerManager(self.root.target) with assertNotTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertIsInstance( mover(self.root.source), ContentError) self.assertTrue('source' in self.root.objectIds()) self.assertFalse('source' in self.root.target.objectIds()) self.assertTrue(verifyObject(IFolder, self.root.source))
def test_move_published_content(self): """Move a single published content. Editors can do it. The link stays published. """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual( mover(self.root.source.published_link), None) self.assertFalse('published_link' in self.root.source.objectIds()) self.assertTrue('published_link' in self.root.target.objectIds()) self.assertTrue(verifyObject(ILink, self.root.target.published_link)) self.assertNotEqual(self.root.target.published_link.get_viewable(), None)
def payload(self): manager = IContainerManager(self.context) with manager.copier() as copier: with self.notifier( copier, u"Pasted as a copy ${contents}.", u"Could not copy ${contents}: ${reason}") as notifier: notifier.map(self.get_selected_contents('copied')) with manager.mover() as mover: with self.notifier( mover, u"Moved ${contents}.", u"Could not move ${contents}: ${reason}") as notifier: notifier.map(self.get_selected_contents('cutted')) return {}
def test_move_published_container(self): """Move a single published container. Authors doesn't have the right to do it. """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual(mover(self.root.source), None) self.assertFalse('source' in self.root.objectIds()) self.assertTrue('source' in self.root.target.objectIds()) self.assertTrue(verifyObject(IFolder, self.root.target.source)) # Inner content is still there and published. self.assertItemsEqual(self.root.target.source.objectIds(), ['toc', 'link', 'published_link', 'folder']) self.assertNotEqual( self.root.target.source.published_link.get_viewable(), None)
def test_move_not_addable_content(self): """Move a content that is not addable in the target folder. This should not be possible (for everybody). """ self.root.target.set_silva_addables_allowed_in_container( ['Silva Image', 'Silva File']) manager = IContainerManager(self.root.target) with assertNotTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertIsInstance(mover(self.root.source.toc), ContainerError) self.assertTrue('toc' in self.root.source.objectIds()) self.assertEqual(self.root.target.objectIds(), []) self.assertTrue(verifyObject(IAutoTOC, self.root.source.toc))
def test_move_not_addable_content(self): """Move a content that is not addable in the target folder. This should not be possible (for everybody). """ self.root.target.set_silva_addables_allowed_in_container( ['Silva Image', 'Silva File']) manager = IContainerManager(self.root.target) with assertNotTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertIsInstance( mover(self.root.source.toc), ContainerError) self.assertTrue('toc' in self.root.source.objectIds()) self.assertEqual(self.root.target.objectIds(), []) self.assertTrue(verifyObject(IAutoTOC, self.root.source.toc))
def test_move_published_container(self): """Move a single published container. Authors doesn't have the right to do it. """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual( mover(self.root.source), None) self.assertFalse('source' in self.root.objectIds()) self.assertTrue('source' in self.root.target.objectIds()) self.assertTrue(verifyObject(IFolder, self.root.target.source)) # Inner content is still there and published. self.assertItemsEqual( self.root.target.source.objectIds(), ['toc', 'link', 'published_link', 'folder']) self.assertNotEqual(self.root.target.source.published_link.get_viewable(), None)
def test_move_multiple(self): """Move multiple content in one time (one container, one unpublished content). """ manager = IContainerManager(self.root.target) with assertTriggersEvents('ObjectWillBeMovedEvent', 'ObjectMovedEvent', 'ContainerModifiedEvent'): with manager.mover() as mover: self.assertNotEqual( mover(self.root.source.folder), None) self.assertNotEqual( mover(self.root.source.link), None) self.assertFalse('folder' in self.root.source.objectIds()) self.assertTrue('folder' in self.root.target.objectIds()) self.assertTrue(verifyObject(IFolder, self.root.target.folder)) self.assertFalse('link' in self.root.source.objectIds()) self.assertTrue('link' in self.root.target.objectIds()) self.assertTrue(verifyObject(ILink, self.root.target.link))
def test_folder_action(self): """Test that folder action update used space. Content structure: root |-- folder1 | `-- subfolder1 | `-- zipfile1.zip `-- folder2 `-- image1.jpg """ # XXX this big hugre factory = self.root.manage_addProduct['Silva'] factory.manage_addFolder('folder1', 'FooFolder 1') factory.manage_addFolder('folder2', 'FooFolder 2') folder1 = self.root._getOb('folder1') folder2 = self.root._getOb('folder2') factory = folder1.manage_addProduct['Silva'] factory.manage_addFolder('subfolder1', 'Sub FooFolder') subfolder1 = folder1._getOb('subfolder1') # By default, all used_space should be at 0 self.assertEqual(self.root.used_space, 0) self.assertEqual(folder1.used_space, 0) self.assertEqual(subfolder1.used_space, 0) # Add a file factory = subfolder1.manage_addProduct['Silva'] with self.layer.open_fixture('test2.zip') as source: factory.manage_addFile('file.zip', 'Zip File', source) zipfile_size = source.tell() zipfile = subfolder1._getOb('file.zip') self.assertTrue(verifyObject(IAsset, zipfile)) self.assertEqual(zipfile.get_file_size(), zipfile_size) # And check used space self.assertEqual(subfolder1.used_space, zipfile_size) self.assertEqual(self.root.used_space, zipfile_size) # Change file data with self.layer.open_fixture('test1.zip') as source: zipfile.set_file(source) zipfile_size = source.tell() self.assertEqual(zipfile.get_file_size(), zipfile_size) # And check used space self.assertEqual(subfolder1.used_space, zipfile_size) self.assertEqual(self.root.used_space, zipfile_size) self.assertEqual(folder2.used_space, 0) # Add an image factory = folder2.manage_addProduct['Silva'] with self.layer.open_fixture('torvald.jpg') as source: factory.manage_addImage('image1.jpg', 'Image File', source) image_size = source.tell() # Verify added image image = folder2._getOb('image1.jpg') self.assertTrue(verifyObject(IAsset, image)) self.assertEqual(image.get_file_size(), image_size) # And check used space self.assertEqual(self.root.used_space, zipfile_size + image_size) self.assertEqual(folder2.used_space, image_size) # Change image and check size with self.layer.open_fixture('testimage.gif') as source: image.set_image(source) image_size = source.tell() # And check used space self.assertEqual(image.get_file_size(), image_size) self.assertEqual(subfolder1.used_space, zipfile_size) self.assertEqual(self.root.used_space, zipfile_size + image_size) self.assertEqual(folder2.used_space, image_size) # Try cut and paste manager2 = IContainerManager(folder2) with manager2.mover() as mover: mover(folder1['subfolder1']) # And check used space self.assertEqual(folder1.used_space, 0) self.assertEqual(self.root.used_space, zipfile_size + image_size) self.assertEqual(folder2.used_space, zipfile_size + image_size) # Try cut and ghost paste manager1 = IContainerManager(folder1) with manager1.ghoster() as ghoster: ghoster(folder2['subfolder1']) # And check used space. Ghost Assets don't use any quota. self.assertEqual(folder1.used_space, 0) self.assertEqual(self.root.used_space, zipfile_size + image_size) self.assertEqual(folder2.used_space, zipfile_size + image_size) # Delete the ghost with manager1.deleter() as deleter: deleter(folder1['subfolder1']) # And check used space self.assertEqual(folder1.used_space, 0) self.assertEqual(self.root.used_space, zipfile_size + image_size) self.assertEqual(folder2.used_space, zipfile_size + image_size) # Try copy and paste with manager1.copier() as copier: copier(folder2['image1.jpg']) # And check used space self.assertEqual(folder1.used_space, image_size) self.assertEqual(self.root.used_space, zipfile_size + (2 * image_size)) self.assertEqual(folder2.used_space, zipfile_size + image_size) # Clean, and check each time manager = IContainerManager(self.root) with manager.deleter() as deleter: deleter(self.root['folder2']) self.assertEqual(self.root.used_space, image_size) with manager.deleter() as deleter: deleter(self.root['folder1']) self.assertEqual(self.root.used_space, 0)