[Checkins] SVN: Products.CMFDefault/branches/2.2/Products/CMFDefault/ - moved upgrade_to_newstyle_actions to pre-2.0 upgrades
Yvo Schubbe
y.2010 at wcm-solutions.de
Thu Mar 4 08:55:37 EST 2010
Log message for revision 109645:
- moved upgrade_to_newstyle_actions to pre-2.0 upgrades
- added upgrade_actions_tool and upgrade_skins_tool
- enabled tests for upgrades from CMF 2.0
Changed:
U Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml
U Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/tests/test_upgrade.py
U Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to20.py
U Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to21.py
-=-
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt 2010-03-04 12:49:46 UTC (rev 109644)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt 2010-03-04 13:55:36 UTC (rev 109645)
@@ -4,7 +4,11 @@
2.2.1-beta (unreleased)
-----------------------
+- upgrade: Added 2 more upgrade steps for upgrades from CMF 2.0.
+ Upgrades from unmodified CMF 2.0 and CMF 2.1 sites are now fully covered,
+ customized or older CMF sites might require additional manual upgrades.
+
2.2.0 (2010-01-04)
------------------
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml 2010-03-04 12:49:46 UTC (rev 109644)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml 2010-03-04 13:55:36 UTC (rev 109645)
@@ -15,6 +15,12 @@
checker=".to20.check_dcmi_metadata"
/>
+ <genericsetup:upgradeStep
+ title="Instantiate new-style actions"
+ handler=".to20.upgrade_to_newstyle_actions"
+ checker=".to20.check_newstyle_actions"
+ />
+
</genericsetup:upgradeSteps>
<genericsetup:upgradeStep
@@ -57,6 +63,18 @@
/>
<genericsetup:upgradeStep
+ title="Upgrade actions tool"
+ handler=".to21.upgrade_actions_tool"
+ checker=".to21.check_actions_tool"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade skins tool"
+ handler=".to21.upgrade_skins_tool"
+ checker=".to21.check_skins_tool"
+ />
+
+ <genericsetup:upgradeStep
title="Unregister bad utility registrations"
handler=".to21.unregister_bad_utilities"
checker=".to21.check_bad_utilities"
@@ -68,12 +86,6 @@
checker=".to21.check_tool_utility_registrations"
/>
- <genericsetup:upgradeStep
- title="Instantiate new-style actions"
- handler=".to21.upgrade_to_newstyle_actions"
- checker=".to21.check_newstyle_actions"
- />
-
</genericsetup:upgradeSteps>
<genericsetup:upgradeStep
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/tests/test_upgrade.py
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/tests/test_upgrade.py 2010-03-04 12:49:46 UTC (rev 109644)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/tests/test_upgrade.py 2010-03-04 13:55:36 UTC (rev 109645)
@@ -96,8 +96,7 @@
def test_suite():
return unittest.TestSuite((
- # XXX: this test fails and depends on five.localsitemanager >= 2.0.3
- #unittest.makeSuite(UpgradeFrom20Tests),
+ unittest.makeSuite(UpgradeFrom20Tests),
unittest.makeSuite(UpgradeFrom21Tests),
))
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to20.py
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to20.py 2010-03-04 12:49:46 UTC (rev 109644)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to20.py 2010-03-04 13:55:36 UTC (rev 109645)
@@ -17,6 +17,8 @@
import logging
from Acquisition import aq_base
+from Acquisition import aq_inner
+from Acquisition import aq_parent
from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.MetadataTool import _DCMI_ELEMENT_SPECS
@@ -51,3 +53,23 @@
, allowed_vocabulary=policy.allowedVocabulary()
)
logger.info('Dublin Core metadata definition updated.')
+
+def check_newstyle_actions(tool):
+ """1.6.x to 2.0.0 upgrade step checker
+ """
+ portal = aq_parent(aq_inner(tool))
+ if not portal.portal_actions.objectIds(['CMF Action Category']):
+ return True
+
+ return False
+
+def upgrade_to_newstyle_actions(tool):
+ """1.6.x to 2.0.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ portal = aq_parent(aq_inner(tool))
+ if not portal.portal_actions.objectIds(['CMF Action Category']):
+ tool.runImportStepFromProfile( 'profile-Products.CMFDefault:default'
+ , 'actions'
+ )
+ logger.info('Instantiated new-style actions in portal_actions')
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to21.py
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to21.py 2010-03-04 12:49:46 UTC (rev 109644)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to21.py 2010-03-04 13:55:36 UTC (rev 109645)
@@ -29,11 +29,14 @@
from zope.dottedname.resolve import resolve
from zope.site.hooks import setSite
+from Products.CMFCore.DirectoryView import _dirreg
+from Products.CMFCore.DirectoryView import _generateKey
+from Products.CMFCore.interfaces import IDirectoryView
from Products.CMFCore.utils import getToolByName
from Products.GenericSetup.context import SetupEnviron
from Products.GenericSetup.interfaces import IBody
-_XML = """\
+_COMPONENTS_XML = """\
<?xml version="1.0"?>
<componentregistry>
<adapters/>
@@ -57,6 +60,29 @@
</componentregistry>
"""
+_ACTIONS_XML = """\
+<?xml version="1.0"?>
+<object name="portal_actions" meta_type="CMF Actions Tool"
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <object name="object" meta_type="CMF Action Category">
+ <object name="interfaces" meta_type="CMF Action" i18n:domain="cmf_default">
+ <property name="title" i18n:translate="">Interfaces</property>
+ <property name="description"
+ i18n:translate="">Assign marker interfaces</property>
+ <property name="url_expr">string:${object_url}/edit-markers.html</property>
+ <property name="link_target"></property>
+ <property
+ name="icon_expr">string:${portal_url}/interfaces_icon.png</property>
+ <property name="available_expr"></property>
+ <property name="permissions">
+ <element value="Manage portal"/>
+ </property>
+ <property name="visible">True</property>
+ </object>
+ </object>
+</object>
+"""
+
def check_root_site_manager(tool):
"""2.0.x to 2.1.0 upgrade step checker
"""
@@ -80,7 +106,7 @@
components.__parent__ = portal
portal.setSiteManager(components)
logger.info("Site manager '%s' added." % name)
- getMultiAdapter((components, SetupEnviron()), IBody).body = _XML
+ getMultiAdapter((components, SetupEnviron()), IBody).body = _COMPONENTS_XML
logger.info('Utility registrations added.')
def check_root_lookup_class(tool):
@@ -104,7 +130,7 @@
components.utilities._createLookup()
components.utilities.__parent__ = components
logger.info('LookupClass replaced.')
- getMultiAdapter((components, SetupEnviron()), IBody).body = _XML
+ getMultiAdapter((components, SetupEnviron()), IBody).body = _COMPONENTS_XML
logger.info('Utility registrations replaced.')
def check_root_properties(tool):
@@ -160,7 +186,67 @@
ti._updateProperty('factory', _FACTORIES[key])
logger.info("TypeInfo '%s' changed." % ti.getId())
+def check_actions_tool(tool):
+ """2.0.x to 2.1.0 upgrade step checker
+ """
+ atool = getToolByName(tool, 'portal_actions')
+ try:
+ atool.object.interfaces
+ except AttributeError:
+ return True
+ return False
+def upgrade_actions_tool(tool):
+ """2.0.x to 2.1.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ atool = getToolByName(tool, 'portal_actions')
+ environ = SetupEnviron()
+ environ._should_purge = False
+ getMultiAdapter((atool, environ), IBody).body = _ACTIONS_XML
+ logger.info("'interfaces' action added.")
+
+def check_skins_tool(tool):
+ """2.0.x to 2.1.0 upgrade step checker
+ """
+ stool = getToolByName(tool, 'portal_skins')
+ for obj in stool.objectValues():
+ if IDirectoryView.providedBy(obj):
+ dirpath = obj.getDirPath()
+ if dirpath is None:
+ continue
+ if dirpath not in _dirreg.listDirectories():
+ return True
+ return False
+
+def _getCurrentKeyFormat(reg_key):
+ dirpath = reg_key.replace('\\', '/')
+ if dirpath.startswith('Products/'):
+ dirpath = dirpath[9:]
+ product = ['Products']
+ dirparts = dirpath.split('/')
+ while dirparts:
+ product.append(dirparts[0])
+ dirparts = dirparts[1:]
+ possible_key = _generateKey('.'.join(product), '/'.join(dirparts))
+ if possible_key in _dirreg._directories:
+ return possible_key
+ return reg_key
+
+def upgrade_skins_tool(tool):
+ """2.0.x to 2.1.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ stool = getToolByName(tool, 'portal_skins')
+ for obj in stool.objectValues():
+ if IDirectoryView.providedBy(obj):
+ dirpath = obj.getDirPath()
+ if dirpath is None:
+ continue
+ if dirpath not in _dirreg.listDirectories():
+ obj._dirpath = _getCurrentKeyFormat(dirpath)
+ logger.info("DirectoryView '%s' changed." % obj.getId())
+
BAD_UTILITIES = [
'Products.CMFCalendar.interfaces.ICalendarTool',
'Products.CMFCore.interfaces.IActionsTool',
@@ -224,7 +310,7 @@
('portal_uidhandler', 'Products.CMFUid.interfaces.IUniqueIdHandler'),
('portal_actionicons', 'Products.CMFActionIcons.interfaces.IActionIconsTool'),
)
-
+
def check_tool_utility_registrations(tool):
"""2.1.0-alpha to 2.1.0 upgrade step checker
"""
@@ -246,7 +332,7 @@
return True
return False
-
+
def handle_tool_utility_registrations(tool):
"""2.1.0-alpha to 2.1.0 upgrade step handler
"""
@@ -266,24 +352,3 @@
sm.registerUtility(tool_obj, iface)
logger.info('Registered %s for interface %s' % (
tool_id, tool_interface))
-
-def check_newstyle_actions(tool):
- """2.1.0-alpha to 2.1.0 upgrade step checker
- """
- portal = aq_parent(aq_inner(tool))
- if not portal.portal_actions.objectIds(['CMF Action Category']):
- return True
-
- return False
-
-def upgrade_to_newstyle_actions(tool):
- """2.1.0-alpha to 2.1.0 upgrade step handler
- """
- logger = logging.getLogger('GenericSetup.upgrade')
- portal = aq_parent(aq_inner(tool))
- if not portal.portal_actions.objectIds(['CMF Action Category']):
- tool.runImportStepFromProfile( 'profile-Products.CMFDefault:default'
- , 'actions'
- )
- logger.info('Instantiated new-style actions in portal_actions')
-
More information about the checkins
mailing list