[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