[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/ - split upgrades into several task-centric steps
Yvo Schubbe
y.2008 at wcm-solutions.de
Tue Dec 23 15:46:55 EST 2008
Log message for revision 94298:
- split upgrades into several task-centric steps
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py 2008-12-23 20:04:06 UTC (rev 94297)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/__init__.py 2008-12-23 20:46:54 UTC (rev 94298)
@@ -14,3 +14,7 @@
$Id$
"""
+
+def mark_as_finished(tool):
+ """empty upgrade step handler
+ """
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml 2008-12-23 20:04:06 UTC (rev 94297)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml 2008-12-23 20:46:54 UTC (rev 94298)
@@ -4,19 +4,94 @@
i18n_domain="cmf_default">
<genericsetup:upgradeStep
+ title="Mark 2.0 upgrade as finished"
+ source="*"
+ destination="2.0"
+ profile="Products.CMFDefault:default"
+ handler=".mark_as_finished"
+ sortkey="1"
+ />
+
+ <genericsetup:upgradeSteps
source="2.0"
destination="2.1"
- title="Upgrade CMFDefault from 2.0 to 2.1 (only site object and types)"
profile="Products.CMFDefault:default"
- handler=".to21.upgrade_default"
+ sortkey="2">
+
+ <genericsetup:upgradeStep
+ title="Add root site manager"
+ handler=".to21.add_root_site_manager"
+ checker=".to21.check_root_site_manager"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade root lookup class"
+ handler=".to21.upgrade_root_lookup_class"
+ checker=".to21.check_root_lookup_class"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade root properties"
+ handler=".to21.upgrade_root_properties"
+ checker=".to21.check_root_properties"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade type properties"
+ handler=".to21.upgrade_type_properties"
+ checker=".to21.check_type_properties"
+ />
+
+ </genericsetup:upgradeSteps>
+
+ <genericsetup:upgradeStep
+ title="Mark 2.1 upgrade as finished"
+ source="2.0"
+ destination="2.1"
+ profile="Products.CMFDefault:default"
+ handler=".mark_as_finished"
+ sortkey="3"
/>
+ <genericsetup:upgradeSteps
+ source="2.1"
+ destination="2.2"
+ profile="Products.CMFDefault:default"
+ sortkey="4">
+
+ <genericsetup:upgradeStep
+ title="Upgrade root site manager"
+ handler=".to22.upgrade_root_site_manager"
+ checker=".to22.check_root_site_manager"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade root properties"
+ handler=".to22.upgrade_root_properties"
+ checker=".to22.check_root_properties"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade type properties"
+ handler=".to22.upgrade_type_properties"
+ checker=".to22.check_type_properties"
+ />
+
+ <genericsetup:upgradeStep
+ title="Add action icons"
+ handler=".to22.add_action_icons"
+ checker=".to22.check_action_icons"
+ />
+
+ </genericsetup:upgradeSteps>
+
<genericsetup:upgradeStep
+ title="Mark 2.2 upgrade as finished"
source="2.1"
destination="2.2"
- title="Upgrade CMFDefault from 2.1 to 2.2 (only site object and types)"
profile="Products.CMFDefault:default"
- handler=".to22.upgrade_default"
+ handler=".mark_as_finished"
+ sortkey="5"
/>
</configure>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py 2008-12-23 20:04:06 UTC (rev 94297)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py 2008-12-23 20:46:54 UTC (rev 94298)
@@ -26,6 +26,7 @@
from zope.component.globalregistry import base
from zope.component.interfaces import ComponentLookupError
+from Products.CMFCore.utils import getToolByName
from Products.GenericSetup.context import SetupEnviron
from Products.GenericSetup.interfaces import IBody
@@ -53,49 +54,77 @@
</componentregistry>
"""
-def upgrade_default(tool):
+def check_root_site_manager(tool):
+ """2.0.x to 2.1.0 upgrade step checker
+ """
+ portal = aq_base(aq_parent(aq_inner(tool)))
+ try:
+ portal.getSiteManager()
+ return False
+ except ComponentLookupError:
+ return True
+
+def add_root_site_manager(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)
- upgrade_TypeInfos(portal, logger)
+ portal = aq_base(aq_parent(aq_inner(tool)))
+ 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)
+ getMultiAdapter((components, SetupEnviron()), IBody).body = _XML
+ logger.info('Utility registrations added.')
-def upgrade_CMFSite_object(portal, logger):
+def check_root_lookup_class(tool):
+ """2.1 beta to 2.1.0 upgrade step checker
+ """
+ portal = aq_base(aq_parent(aq_inner(tool)))
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.')
+ return False
+ return components.utilities.LookupClass != FiveVerifyingAdapterLookup
- if not portal.hasProperty('email_charset'):
- portal.manage_addProperty('email_charset', 'iso-8859-1', 'string')
- prop_map = list(portal._properties)
- for i in range(len(prop_map)):
- if prop_map[i]['id'] == 'default_charset':
- email_charset_info = prop_map.pop(-1)
- prop_map.insert(i+1, email_charset_info)
- portal._properties = tuple(prop_map)
- break
- logger.info("'email_charset' property added.")
+def upgrade_root_lookup_class(tool):
+ """2.1 beta to 2.1.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ portal = aq_base(aq_parent(aq_inner(tool)))
+ components = portal.getSiteManager()
+ components.__parent__ = portal
+ components.utilities.LookupClass = FiveVerifyingAdapterLookup
+ components.utilities._createLookup()
+ components.utilities.__parent__ = components
+ logger.info('LookupClass replaced.')
+ getMultiAdapter((components, SetupEnviron()), IBody).body = _XML
+ logger.info('Utility registrations replaced.')
+def check_root_properties(tool):
+ """2.0.x to 2.1.0 upgrade step checker
+ """
+ portal = aq_parent(aq_inner(tool))
+ return not portal.hasProperty('email_charset')
+
+def upgrade_root_properties(tool):
+ """2.0.x to 2.1.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ portal = aq_parent(aq_inner(tool))
+ portal.manage_addProperty('email_charset', 'iso-8859-1', 'string')
+ prop_map = list(portal._properties)
+ for i in range(len(prop_map)):
+ if prop_map[i]['id'] == 'default_charset':
+ email_charset_info = prop_map.pop(-1)
+ prop_map.insert(i+1, email_charset_info)
+ portal._properties = tuple(prop_map)
+ break
+ logger.info("'email_charset' property added.")
+
_FACTORIES = {
'CMFCore-manage_addPortalFolder': 'cmf.folder',
'CMFCore-manage_addCMFBTreeFolder': 'cmf.folder.btree',
@@ -106,11 +135,24 @@
'CMFDefault-addLink': 'cmf.link',
'CMFDefault-addNewsItem': 'cmf.newsitem'}
-def upgrade_TypeInfos(portal, logger):
- ttool = portal.portal_types
+def check_type_properties(tool):
+ """2.0.x to 2.1.0 upgrade step checker
+ """
+ ttool = getToolByName(tool, 'portal_types')
for ti in ttool.listTypeInfo():
key = '%s-%s' % (ti.getProperty('product'), ti.getProperty('factory'))
if key in _FACTORIES:
+ return True
+ return False
+
+def upgrade_type_properties(tool):
+ """2.0.x to 2.1.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ ttool = getToolByName(tool, 'portal_types')
+ for ti in ttool.listTypeInfo():
+ key = '%s-%s' % (ti.getProperty('product'), ti.getProperty('factory'))
+ if key in _FACTORIES:
ti._updateProperty('product', '')
ti._updateProperty('factory', _FACTORIES[key])
logger.info("TypeInfo '%s' changed." % ti.getId())
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py 2008-12-23 20:04:06 UTC (rev 94297)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to22.py 2008-12-23 20:46:54 UTC (rev 94298)
@@ -19,24 +19,73 @@
from Acquisition import aq_inner
from Acquisition import aq_parent
+from zope.component.interfaces import ComponentLookupError
-def upgrade_default(tool):
+from Products.CMFCore.utils import getToolByName
+
+def check_root_site_manager(tool):
+ """2.1.x to 2.2.0 upgrade step checker
+ """
+ portal = aq_parent(aq_inner(tool))
+ try:
+ components = portal.getSiteManager()
+ except ComponentLookupError:
+ return True
+ return components.__name__ != '++etc++site'
+
+def upgrade_root_site_manager(tool):
"""2.1.x to 2.2.0 upgrade step handler
"""
+ logger = logging.getLogger('GenericSetup.upgrade')
portal = aq_parent(aq_inner(tool))
+ try:
+ components = portal.getSiteManager()
+ except ComponentLookupError:
+ logger.warning("Site manager missing.")
+ return
+ components.__name__ = '++etc++site'
+ logger.info("Site manager name changed to '++etc++site'.")
+
+def check_root_properties(tool):
+ """2.1.x to 2.2.0 upgrade step checker
+ """
+ portal = aq_parent(aq_inner(tool))
+ return not portal.hasProperty('enable_actionicons')
+
+def upgrade_root_properties(tool):
+ """2.1.x to 2.2.0 upgrade step handler
+ """
logger = logging.getLogger('GenericSetup.upgrade')
- upgrade_CMFSite_object(portal, logger)
- upgrade_TypeInfos(portal, logger)
+ portal = aq_parent(aq_inner(tool))
+ portal.manage_addProperty('enable_actionicons', False, 'boolean')
+ logger.info("'enable_actionicons' property added.")
-def upgrade_CMFSite_object(portal, logger):
- components = portal.getSiteManager()
- if components.__name__ != '++etc++site':
- components.__name__ = '++etc++site'
- logger.info('Site manager name changed.')
+def check_type_properties(tool):
+ """2.1.x to 2.2.0 upgrade step checker
+ """
+ ttool = getToolByName(tool, 'portal_types')
+ for ti in ttool.listTypeInfo():
+ if ti.getProperty('add_view_expr'):
+ continue
+ if ti.getProperty('content_meta_type') == 'Discussion Item':
+ continue
+ return True
+ return False
- if not portal.hasProperty('enable_actionicons'):
- portal.manage_addProperty('enable_actionicons', False, 'boolean')
- logger.info("'enable_actionicons' property added.")
+def upgrade_type_properties(tool):
+ """2.1.x to 2.2.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ ttool = getToolByName(tool, 'portal_types')
+ for ti in ttool.listTypeInfo():
+ if ti.getProperty('add_view_expr'):
+ continue
+ if ti.getProperty('content_meta_type') == 'Discussion Item':
+ continue
+ ti._updateProperty('add_view_expr',
+ 'string:${folder_url}/++add++%s'
+ % quote(ti.getId()))
+ logger.info("TypeInfo '%s' changed." % ti.getId())
_ACTION_ICONS = {'download': 'download_icon.png',
'edit': 'edit_icon.png',
@@ -51,16 +100,23 @@
'reviewer_queue': 'worklist_icon.png',
}
-def upgrade_TypeInfos(portal, logger):
- ttool = portal.portal_types
+def check_action_icons(tool):
+ """2.1.x to 2.2.0 upgrade step checker
+ """
+ ttool = getToolByName(tool, 'portal_types')
for ti in ttool.listTypeInfo():
+ for ai in ti.listActions():
+ if not ai.getIconExpression() and ai.getId() in _ACTION_ICONS:
+ return True
+ return False
+
+def add_action_icons(tool):
+ """2.1.x to 2.2.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ ttool = getToolByName(tool, 'portal_types')
+ for ti in ttool.listTypeInfo():
changed = False
- if ti.getProperty('content_meta_type') != 'Discussion Item' and \
- not ti.getProperty('add_view_expr'):
- ti._updateProperty('add_view_expr',
- 'string:${folder_url}/++add++%s'
- % quote(ti.getId()))
- changed = True
for ai in ti.listActions():
if not ai.getIconExpression() and ai.getId() in _ACTION_ICONS:
ai.setIconExpression('string:${portal_url}/%s'
More information about the Checkins
mailing list