[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - added basic upgrade steps

Yvo Schubbe y.2008 at wcm-solutions.de
Mon Nov 17 08:01:47 EST 2008


Log message for revision 93044:
  - added basic upgrade steps

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/configure.zcml
  A   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/
  A   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py
  A   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
  A   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
  A   Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2008-11-17 12:59:58 UTC (rev 93043)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt	2008-11-17 13:01:46 UTC (rev 93044)
@@ -4,6 +4,9 @@
 2.2.0 (unreleased)
 ------------------
 
+- upgrade: Added basic upgrade steps.
+  So far they just allow to add and upgrade the root site manager.
+
 - DiscussionTool: Make sure to only ask "real" content for their type
   information when checking whether discussions are allowed or not.
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/configure.zcml	2008-11-17 12:59:58 UTC (rev 93043)
+++ Products.CMFDefault/trunk/Products/CMFDefault/configure.zcml	2008-11-17 13:01:46 UTC (rev 93044)
@@ -7,6 +7,8 @@
 
   <include package=".formlib"/>
 
+  <include package=".upgrade"/>
+
   <include file="content.zcml"/>
 
   <include file="exportimport.zcml"/>

Added: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py	2008-11-17 13:01:46 UTC (rev 93044)
@@ -0,0 +1,16 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""CMFDefault upgrade steps.
+
+$Id$
+"""


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml	2008-11-17 13:01:46 UTC (rev 93044)
@@ -0,0 +1,22 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
+    i18n_domain="cmf_default">
+
+  <genericsetup:upgradeStep
+      source="2.0"
+      destination="2.1"
+      title="Upgrade CMFDefault from 2.0 to 2.1 (only site object)"
+      profile="Products.CMFDefault:default"
+      handler=".to21.upgrade_default"
+      />
+
+  <genericsetup:upgradeStep
+      source="2.1"
+      destination="2.2"
+      title="Upgrade CMFDefault from 2.1 to 2.2 (only site object)"
+      profile="Products.CMFDefault:default"
+      handler=".to22.upgrade_default"
+      />
+
+</configure>


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
___________________________________________________________________
Added: svn:eol-style
   + native

Added: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py	2008-11-17 13:01:46 UTC (rev 93044)
@@ -0,0 +1,85 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Upgrade steps to CMFDefault 2.1.
+
+$Id$
+"""
+import logging
+
+from Acquisition import aq_base
+from Acquisition import aq_inner
+from Acquisition import aq_parent
+from five.localsitemanager import find_next_sitemanager
+from five.localsitemanager.registry import FiveVerifyingAdapterLookup
+from five.localsitemanager.registry import PersistentComponents
+from zope.component import getMultiAdapter
+from zope.component.globalregistry import base
+from zope.component.interfaces import ComponentLookupError
+
+from Products.GenericSetup.context import SetupEnviron
+from Products.GenericSetup.interfaces import IBody
+
+_XML = """\
+<?xml version="1.0"?>
+<componentregistry>
+ <adapters/>
+ <utilities>
+  <utility interface="Products.CMFCore.interfaces.IDiscussionTool"
+     object="portal_discussion"/>
+  <utility interface="Products.CMFCore.interfaces.IMetadataTool"
+     object="portal_metadata"/>
+  <utility interface="Products.CMFCore.interfaces.IPropertiesTool"
+     object="portal_properties"/>
+  <utility interface="Products.CMFCore.interfaces.ISiteRoot" object=""/>
+  <utility interface="Products.CMFCore.interfaces.ISyndicationTool"
+     object="portal_syndication"/>
+  <utility interface="Products.CMFCore.interfaces.IUndoTool"
+     object="portal_undo"/>
+  <utility interface="Products.GenericSetup.interfaces.ISetupTool"
+     object="portal_setup"/>
+  <utility interface="Products.MailHost.interfaces.IMailHost"
+     object="MailHost"/>
+ </utilities>
+</componentregistry>
+"""
+
+def upgrade_default(tool):
+    """2.0.x to 2.1.0 upgrade step handler
+    """
+    portal = aq_parent(aq_inner(tool))
+    logger = logging.getLogger('GenericSetup.upgrade')
+    upgrade_CMFSite_object(aq_base(portal), logger)
+
+def upgrade_CMFSite_object(portal, logger):
+    try:
+        components = portal.getSiteManager()
+    except ComponentLookupError:
+        next = find_next_sitemanager(portal)
+        if next is None:
+            next = base
+        name = '/'.join(portal.getPhysicalPath())
+        components = PersistentComponents(name, (next,))
+        components.__parent__ = portal
+        portal.setSiteManager(components)
+        logger.info("Site manager '%s' added." % name)
+    else:
+        if components.utilities.LookupClass != FiveVerifyingAdapterLookup:
+            # for CMF 2.1 beta instances
+            components.__parent__ = portal
+            components.utilities.LookupClass = FiveVerifyingAdapterLookup
+            components.utilities._createLookup()
+            components.utilities.__parent__ = components
+            logger.info('LookupClass replaced.')
+    if not tuple(components.registeredUtilities()):
+        getMultiAdapter((components, SetupEnviron()), IBody).body = _XML
+        logger.info('Utility registrations added.')


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py	2008-11-17 13:01:46 UTC (rev 93044)
@@ -0,0 +1,33 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Upgrade steps to CMFDefault 2.2.
+
+$Id$
+"""
+import logging
+
+from Acquisition import aq_inner
+from Acquisition import aq_parent
+
+def upgrade_default(tool):
+    """2.1.x to 2.2.0 upgrade step handler
+    """
+    portal = aq_parent(aq_inner(tool))
+    logger = logging.getLogger('GenericSetup.upgrade')
+    upgrade_CMFSite_object(portal, logger)
+
+def upgrade_CMFSite_object(portal, logger):
+    components = portal.getSiteManager()
+    if components.__name__ != '++etc++site':
+        components.__name__ = '++etc++site'
+        logger.info('Site manager name changed.')


Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native



More information about the Checkins mailing list