[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