[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