[Checkins] SVN: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py fixes for utility registration

Andreas Jung andreas at andreas-jung.com
Wed Mar 28 07:07:09 EDT 2007


Log message for revision 73841:
  fixes for utility registration
  

Changed:
  U   z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py

-=-
Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py	2007-03-28 10:53:16 UTC (rev 73840)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py	2007-03-28 11:07:09 UTC (rev 73841)
@@ -16,7 +16,7 @@
 
 from zope.component import getService, getGlobalServices, getUtilitiesFor
 from zope.component.utility import GlobalUtilityService
-from zope.component.interfaces import IUtilityService
+from zope.component.interfaces import IUtilityService, ComponentLookupError
 from zope.component.servicenames import Utilities 
 
 from z3c.sqlalchemy.interfaces import ISQLAlchemyWrapper
@@ -46,22 +46,25 @@
 def registerSQLAlchemyWrapper(wrapper, name):
     """ register a SQLAlchemyWrapper as named utility """
 
-    # Bootstrap utility service
     try:
+        # Zope 2.9
+        from zope.component import provideUtility
+        provideUtility(wrapper, name=name)           
+    except ImportError:
         # Zope 2.8
+        from zope.component import getService, getGlobalServices, getUtilitiesFor
+        from zope.component.utility import GlobalUtilityService
+        from zope.component.interfaces import IUtilityService
+        from zope.component.servicenames import Utilities
         sm = getGlobalServices()
-        sm.defineService(Utilities, IUtilityService)
-        sm.provideService(Utilities, GlobalUtilityService())
+        try:
+            utilityService = getService(Utilities)
+        except ComponentLookupError:
+            sm.defineService(Utilities, IUtilityService)
+            sm.provideService(Utilities, GlobalUtilityService())
+            utilityService = getService(Utilities)
+            utilityService.provideUtility(ISQLAlchemyWrapper, wrapper, name)
 
-        # register wrapper 
-        utilityService = getService(Utilities)
-        utilityService.provideUtility(ISQLAlchemyWrapper, wrapper, name)
-
-    except NotImplementedError:
-        # Zope 2.9+
-        from zope.component import provideUtility
-        provideUtility(wrapper, name=name)
-
 def allRegisteredSQLAlchemyWrappers():
     """ return a dict containing information for all
         registered wrappers.



More information about the Checkins mailing list