[Testbot] Plone 5.0 - Python 2.7 - Build # 3598 - Still failing! - 0 failure(s)

jenkins at plone.org jenkins at plone.org
Sun Nov 2 17:22:24 UTC 2014


-------------------------------------------------------------------------------
Plone 5.0 - Python 2.7 - Build # 3598 - Still Failing!
-------------------------------------------------------------------------------

http://jenkins.plone.org/job/plone-5.0-python-2.7/3598/


-------------------------------------------------------------------------------
CHANGES
-------------------------------------------------------------------------------

Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-11-02T16:40:16Z
Author: Philip Bauer (pbauer) <bauer at starzel.de>
Commit: https://github.com/plone/plone.app.contenttypes/commit/6ef6e6d728efaf8f23f9ddebcbf1fc863c84d3d4

refactor migrate_portlets to make it reuseable
add portlet-migrations for folders and add tests for this

Files changed:
M plone/app/contenttypes/migration/migration.py
M plone/app/contenttypes/tests/test_migration.py

diff --git a/plone/app/contenttypes/migration/migration.py b/plone/app/contenttypes/migration/migration.py
index f16c565..f6ea61d 100644
--- a/plone/app/contenttypes/migration/migration.py
+++ b/plone/app/contenttypes/migration/migration.py
@@ -52,6 +52,40 @@ def migrate(portal, migrator):
     return walker
 
 
+def migrate_portlets(src_obj, dst_obj):
+    """Copy portlets for all available portletmanagers from one object
+    to another.
+    Also takes blocked portlet settings into account, keeps hidden portlets
+    hidden and skips broken assignments.
+    """
+
+    # also take custom portlet managers into account
+    managers = [reg.name for reg in getSiteManager().registeredUtilities() \
+                if reg.provided == IPortletManager]
+    # faster, but no custom managers
+    # managers = [u'plone.leftcolumn', u'plone.rightcolumn']
+
+    # copy information which categories are hidden for which manager
+    blacklist_status = IAnnotations(src_obj).get(
+        CONTEXT_BLACKLIST_STATUS_KEY, None)
+    if blacklist_status is not None:
+        IAnnotations(dst_obj)[CONTEXT_BLACKLIST_STATUS_KEY] = \
+            deepcopy(blacklist_status)
+
+    # copy all portlet assignments (visibilty is stored as annotation
+    # on the assignments and gets copied here too)
+    for manager in managers:
+        column = getUtility(IPortletManager, manager)
+        mappings = getMultiAdapter((src_obj, column),
+                                   IPortletAssignmentMapping)
+        for key, assignment in mappings.items():
+            # skip possibly broken portlets here
+            if not hasattr(assignment, '__Broken_state__'):
+                add_portlet(dst_obj, assignment, key, manager)
+            else:
+                logger.warn(u'skipping broken portlet assignment {0} for manager {1}'.format(key, manager))
+
+
 def refs(obj):
     intids = getUtility(IIntIds)
     out = ''
@@ -237,39 +271,6 @@ def __init__(self, *args, **kwargs):
             "Migrating object {0}".format(
                 '/'.join(self.old.getPhysicalPath())))
 
-    def migrate_portlets(self):
-        """copy portlets for all available portletmanagers from AT objects
-        to DX objects
-        also takes blocked portlet settings into account, keeps hidden portlets
-        hidden and skips broken assignments.
-        """
-
-        # also take custom portlet managers into account
-        managers = [reg.name for reg in getSiteManager().registeredUtilities() \
-                    if reg.provided == IPortletManager]
-        # faster, but no custom managers
-        # managers = [u'plone.leftcolumn', u'plone.rightcolumn']
-
-        # copy information which categories are hidden for which manager
-        blacklist_status = IAnnotations(self.old).get(
-            CONTEXT_BLACKLIST_STATUS_KEY, None)
-        if blacklist_status is not None:
-            IAnnotations(self.new)[CONTEXT_BLACKLIST_STATUS_KEY] = \
-                deepcopy(blacklist_status)
-
-        # copy all portlet assignments (visibilty is stored as annotation
-        # on the assignments and gets copied here too)
-        for manager in managers:
-            column = getUtility(IPortletManager, manager)
-            mappings = getMultiAdapter((self.old, column),
-                                       IPortletAssignmentMapping)
-            for key, assignment in mappings.items():
-                # skip possibly broken portlets here
-                if not hasattr(assignment, '__Broken_state__'):
-                    add_portlet(self.new, assignment, key, manager)
-                else:
-                    logger.warn(u'skipping broken portlet assignment {0} for manager {1}'.format(key, manager))
-
     def migrate_atctmetadata(self):
         field = self.old.getField('excludeFromNav')
         self.new.exclude_from_nav = field.get(self.old)
@@ -280,6 +281,9 @@ def migrate_custom(self):
         for _, migrator in getAdapters((self.old,), ICustomMigrator):
             migrator.migrate(self.old, self.new)
 
+    def migrate_portlets(self):
+        migrate_portlets(self.old, self.new)
+
 
 class ATCTFolderMigrator(CMFFolderMigrator, ReferenceMigrator):
     """Base for folderish ATCT
@@ -300,6 +304,9 @@ def migrate_custom(self):
         for _, migrator in getAdapters((self.old,), ICustomMigrator):
             migrator.migrate(self.old, self.new)
 
+    def migrate_portlets(self):
+        migrate_portlets(self.old, self.new)
+
 
 class DocumentMigrator(ATCTContentMigrator):
 
diff --git a/plone/app/contenttypes/tests/test_migration.py b/plone/app/contenttypes/tests/test_migration.py
index 04d2b7d..fd6c0fc 100644
--- a/plone/app/contenttypes/tests/test_migration.py
+++ b/plone/app/contenttypes/tests/test_migration.py
@@ -1287,6 +1287,7 @@ def test_portlets_are_migrated(self):
         content including portlet settings.
         """
         from plone.app.contenttypes.migration.migration import DocumentMigrator
+        from plone.app.contenttypes.migration.migration import FolderMigrator
         from plone.portlet.static.static import Assignment as StaticAssignment
         from plone.portlets.constants import GROUP_CATEGORY
         from plone.portlets.interfaces import ILocalPortletAssignmentManager
@@ -1331,10 +1332,22 @@ def get_portlets(context, columnName):
         broken.__Broken_state__ = True
         add_portlet(at_document, broken, 'broken-portlet', u'plone.leftcolumn')
 
+        # add a folder
+        self.portal.invokeFactory('Folder', 'folder')
+        at_folder = self.portal['folder']
+
+        # add a portlet to the folder
+        portlet2 = StaticAssignment(u"Sample Folder Portlet",
+                                   "<p>Do I get migrated?</p>")
+        add_portlet(at_folder, portlet2, 'static-portlet',
+                    u'plone.rightcolumn')
+
         # migrate
         applyProfile(self.portal, 'plone.app.contenttypes:default')
         migrator = self.get_migrator(at_document, DocumentMigrator)
         migrator.migrate()
+        folder_migrator = self.get_migrator(at_folder, FolderMigrator)
+        folder_migrator.migrate()
 
         # assertions
         dx_document = self.portal['document']
@@ -1357,3 +1370,7 @@ def get_portlets(context, columnName):
                                   u'plone.leftcolumn')['static-portlet']
         settings = IPortletAssignmentSettings(assignment)
         self.assertFalse(settings['visible'])
+
+        dx_folder = self.portal['folder']
+        self.failUnless('static-portlet' in get_portlets(dx_folder,
+                                                         u'plone.rightcolumn'))




-------------------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CHANGES.log
Type: application/octet-stream
Size: 7110 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20141102/710af23b/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build.log
Type: application/octet-stream
Size: 100097 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20141102/710af23b/attachment-0003.obj>


More information about the Testbot mailing list