[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ - Upgrade steps: Merged faulty utility registration fixup script
Jens Vagelpohl
jens at dataflake.org
Wed Dec 9 13:02:02 EST 2009
Log message for revision 106350:
- Upgrade steps: Merged faulty utility registration fixup script
from Products.CMFCore for pre-2.1.0 instances into a GenericSetup
upgrade step
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
U Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2009-12-09 18:00:46 UTC (rev 106349)
+++ Products.CMFDefault/trunk/Products/CMFDefault/CHANGES.txt 2009-12-09 18:02:02 UTC (rev 106350)
@@ -4,6 +4,10 @@
2.3.0-alpha (unreleased)
------------------------
+- Upgrade steps: Merged faulty utility registration fixup script
+ from Products.CMFCore for pre-2.1.0 instances into a GenericSetup
+ upgrade step
+
- WorkflowTool/DiscussionItem: Create a set of GenericSetup
upgrade steps to instantiate the new single-state workflow
for Discussion Items and associate it with the content type.
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml 2009-12-09 18:00:46 UTC (rev 106349)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/configure.zcml 2009-12-09 18:02:02 UTC (rev 106350)
@@ -56,6 +56,12 @@
checker=".to21.check_type_properties"
/>
+ <genericsetup:upgradeStep
+ title="Unregister bad utility registrations"
+ handler=".to21.unregister_bad_utilities"
+ checker=".to21.check_bad_utilities"
+ />
+
</genericsetup:upgradeSteps>
<genericsetup:upgradeStep
Modified: Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py 2009-12-09 18:00:46 UTC (rev 106349)
+++ Products.CMFDefault/trunk/Products/CMFDefault/upgrade/to21.py 2009-12-09 18:02:02 UTC (rev 106350)
@@ -23,8 +23,11 @@
from five.localsitemanager.registry import FiveVerifyingAdapterLookup
from five.localsitemanager.registry import PersistentComponents
from zope.component import getMultiAdapter
+from zope.component import getSiteManager
from zope.component.globalregistry import base
from zope.component.interfaces import ComponentLookupError
+from zope.dottedname.resolve import resolve
+from zope.site.hooks import setSite
from Products.CMFCore.utils import getToolByName
from Products.GenericSetup.context import SetupEnviron
@@ -156,3 +159,53 @@
ti._updateProperty('product', '')
ti._updateProperty('factory', _FACTORIES[key])
logger.info("TypeInfo '%s' changed." % ti.getId())
+
+
+BAD_UTILITIES = [
+ 'Products.CMFCalendar.interfaces.ICalendarTool',
+ 'Products.CMFCore.interfaces.IActionsTool',
+ 'Products.CMFCore.interfaces.ICatalogTool',
+ 'Products.CMFCore.interfaces.IContentTypeRegistry',
+ 'Products.CMFCore.interfaces.ISkinsTool',
+ 'Products.CMFCore.interfaces.ITypesTool',
+ 'Products.CMFCore.interfaces.IURLTool',
+ 'Products.CMFCore.interfaces.IConfigurableWorkflowTool',
+ 'Products.CMFCore.interfaces.IMembershipTool',
+ 'Products.CMFCore.interfaces.IRegistrationTool',
+ ]
+
+def check_bad_utilities(tool):
+ """2.1.0-beta to 2.1.0 upgrade step checker
+ """
+ portal = aq_parent(aq_inner(tool))
+
+ # We have to call setSite to make sure we have a site with a proper
+ # acquisition context.
+ setSite(portal)
+
+ sm = getSiteManager(portal)
+ for utility in BAD_UTILITIES:
+ iface = resolve(utility)
+ if sm.queryUtility(iface) is not None:
+ return True
+
+ return False
+
+def unregister_bad_utilities(tool):
+ """2.1.0-beta to 2.1.0 upgrade step handler
+ """
+ logger = logging.getLogger('GenericSetup.upgrade')
+ portal = aq_parent(aq_inner(tool))
+
+ # We have to call setSite to make sure we have a site with a proper
+ # acquisition context.
+ setSite(portal)
+
+ sm = getSiteManager(portal)
+ for dotted_path in BAD_UTILITIES:
+ iface = resolve(dotted_path)
+ if sm.queryUtility(iface) is not None:
+ sm.unregisterUtility(provided=iface)
+ logger.info('Unregistered utility for %s' % dotted_path)
+
+
More information about the checkins
mailing list