Example #1
0
 def doMigration(self):
     """
     handle migration from a portal_type to anther, and log all outputs given
     """
     src_type = self.request.form.get('src_type', '')
     dst_type = self.request.form.get('dst_type', '')
     src_metatype = self.request.form.get('src_metatype', '')
     dst_metatype = self.request.form.get('dst_metatype', '')
     query = self.makeQuery()
     logger.info("*********** Migration start ***********")
     output = migrateContents(self.context, src_type, dst_type, src_metatype, dst_metatype, query)
     pu = getToolByName(self.context, "plone_utils")
     pu.addPortalMessage(_("Migration from ${src_type} to ${dst_type}: found ${results} items.",
                           mapping={u"src_type": src_type,
                                     "dst_type": dst_type,
                                     "results": output.get('counter', '')}),
                         'info')
     for m in output.get('msg', []):
         logger.info(m)
     logger.info("*********** Migration done ***********")
     if output.get('error', []):
         for error in output.get('error', []):
             pu.addPortalMessage(error.get('msg', ''), 'error')
             return False
     return True
Example #2
0
 def test_folder_migrator(self):
     """
     try to migrate Documents into News items
     """
     output = migrateContents(self.portal, "Folder", "Folder")
     self.assertEqual(output.get('counter', 0), 2)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(self.portal.portal_catalog(portal_type="Folder").actual_result_count == 2)
Example #3
0
 def test_migrate_notype_to_document(self):
     """
     try to migrate Documents into News items
     """
     output = migrateContents(self.portal, "Event", "Document")
     self.assertEqual(output.get('counter', 0), 0)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(self.portal.portal_catalog(portal_type="Document").actual_result_count == 10)
     self.assertTrue(self.portal.portal_catalog(portal_type="Event").actual_result_count == 0)
Example #4
0
 def test_migrate_empty_folder_to_document(self):
     """
     Try to migrate Folders into Documents.
     If the folder is empty, this can be done.
     """
     output = migrateContents(self.portal, "Folder", "Document")
     self.assertEqual(output.get('counter', 0), 2)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(self.portal.portal_catalog(portal_type="Document").actual_result_count == 12)
     self.assertTrue(self.portal.portal_catalog(portal_type="Folder").actual_result_count == 0)
 def test_folder_migrator(self):
     """
     try to migrate Documents into News items
     """
     output = migrateContents(self.portal, "Folder", "Folder")
     self.assertEqual(output.get('counter', 0), 2)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Folder").actual_result_count == 2)
Example #6
0
 def test_migrate_document_to_folder(self):
     """
     Try to migrate Documente into Folders
     """
     output = migrateContents(self.portal, "Document", "Folder")
     self.assertEqual(output.get('counter', 0), 10)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(self.portal.portal_catalog(portal_type="Document").actual_result_count == 0)
     self.assertTrue(self.portal.portal_catalog(portal_type="Folder").actual_result_count == 12)
     folder_titles = ['Folder 1', 'Folder 2', 'My page 0', 'My page 1', 'My page 2', 'My page 3', 'My page 4', 'My page 5', 'My page 6', 'My page 7', 'My page 8', 'My page 9']
     self.assertEqual([x.Title for x in self.portal.portal_catalog(portal_type="Folder", sort_on="sortable_title")], folder_titles)
 def test_migrate_notype_to_document(self):
     """
     try to migrate Documents into News items
     """
     output = migrateContents(self.portal, "Event", "Document")
     self.assertEqual(output.get('counter', 0), 0)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Document").actual_result_count == 10)
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Event").actual_result_count == 0)
 def test_migrate_empty_folder_to_document(self):
     """
     Try to migrate Folders into Documents.
     If the folder is empty, this can be done.
     """
     output = migrateContents(self.portal, "Folder", "Document")
     self.assertEqual(output.get('counter', 0), 2)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Document").actual_result_count == 12)
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Folder").actual_result_count == 0)
Example #9
0
 def test_migrate_folder_to_document(self):
     """
     Try to migrate Folders into Documents.
     If the folder have elements, this can't be done.
     """
     folder = self.portal['folder-1']
     folder.invokeFactory('Document',
                          'my-page-test',
                          title="My page test",
                          text='spam spam')
     output = migrateContents(self.portal, "Folder", "Document")
     self.assertEqual(output.get('counter', 0), 2)
     self.assertNotEqual(output.get('error', []), [])
     self.assertEqual(output['error'][0]['msg'], 'Failed migration for object /plone/folder-1 (Folder -> Document)')
     self.assertTrue(self.portal.portal_catalog(portal_type="Document").actual_result_count == 12)
     self.assertTrue(self.portal.portal_catalog(portal_type="Folder").actual_result_count == 1)
     self.assertEqual(self.portal['folder-2'].portal_type, "Document")
     self.assertEqual(self.portal['folder-1'].portal_type, "Folder")
 def test_migrate_document_to_folder(self):
     """
     Try to migrate Documente into Folders
     """
     output = migrateContents(self.portal, "Document", "Folder")
     self.assertEqual(output.get('counter', 0), 10)
     self.assertEqual(output.get('error', []), [])
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Document").actual_result_count == 0)
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Folder").actual_result_count == 12)
     folder_titles = [
         'Folder 1', 'Folder 2', 'My page 0', 'My page 1', 'My page 2',
         'My page 3', 'My page 4', 'My page 5', 'My page 6', 'My page 7',
         'My page 8', 'My page 9'
     ]
     self.assertEqual([
         x.Title
         for x in self.portal.portal_catalog(portal_type="Folder",
                                             sort_on="sortable_title")
     ], folder_titles)
    def doMigration(self):
        """
        handle migration from a portal_type to anther, and log all outputs given
        """
        portal_path = '/'.join(self.context.getPhysicalPath())

        src_type = self.request.form.get('src_type', '')
        dst_type = self.request.form.get('dst_type', '')
        folder_path = self.request.form.get('folder_path', portal_path)

        if folder_path and (not folder_path.startswith(portal_path)):
            folder_path = (folder_path[0] == '/') \
                and portal_path + folder_path  \
                or portal_path + '/' + folder_path

        logger.info("*********** Migration start ***********")
        output = migrateContents(self.context,
                                 src_type,
                                 dst_type,
                                 query={'path': folder_path})
        pu = getToolByName(self.context, "plone_utils")
        pu.addPortalMessage(
            _("Migration from ${src_type} to ${dst_type}: found ${results} items.",
              mapping={
                  u"src_type": src_type,
                  "dst_type": dst_type,
                  "results": output.get('counter', '')
              }), 'info')
        for m in output.get('msg', []):
            logger.info(m)
        logger.info("*********** Migration done ***********")
        if output.get('error', []):
            for error in output.get('error', []):
                pu.addPortalMessage(error.get('msg', ''), 'error')
                return False
        return True
 def test_migrate_folder_to_document(self):
     """
     Try to migrate Folders into Documents.
     If the folder have elements, this can't be done.
     """
     folder = self.portal['folder-1']
     folder.invokeFactory('Document',
                          'my-page-test',
                          title="My page test",
                          text='spam spam')
     output = migrateContents(self.portal, "Folder", "Document")
     self.assertEqual(output.get('counter', 0), 2)
     self.assertNotEqual(output.get('error', []), [])
     self.assertEqual(
         output['error'][0]['msg'],
         'Failed migration for object /plone/folder-1 (Folder -> Document)')
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Document").actual_result_count == 12)
     self.assertTrue(
         self.portal.portal_catalog(
             portal_type="Folder").actual_result_count == 1)
     self.assertEqual(self.portal['folder-2'].portal_type, "Document")
     self.assertEqual(self.portal['folder-1'].portal_type, "Folder")