[Checkins] SVN: CMF/branches/2.1/CMFCore/utils.py Be more careful when wrapping utilities

Wichert Akkerman wichert at wiggy.net
Sun Apr 29 09:18:12 EDT 2007


Log message for revision 74890:
  Be more careful when wrapping utilities

Changed:
  U   CMF/branches/2.1/CMFCore/utils.py

-=-
Modified: CMF/branches/2.1/CMFCore/utils.py
===================================================================
--- CMF/branches/2.1/CMFCore/utils.py	2007-04-29 12:04:45 UTC (rev 74889)
+++ CMF/branches/2.1/CMFCore/utils.py	2007-04-29 13:18:11 UTC (rev 74890)
@@ -28,6 +28,7 @@
 from AccessControl.Permission import Permission
 from AccessControl.PermissionRole import rolesForPermissionOn
 from AccessControl.Role import gather_permissions
+from Acquisition.interfaces import IAcquirer
 from Acquisition import aq_get
 from Acquisition import aq_inner
 from Acquisition import aq_parent
@@ -102,7 +103,14 @@
     if tool_interface is not None:
         try:
             utility = getUtility(tool_interface)
-            return utility.__of__(obj)
+            # Site managers, except for five.localsitemanager, return unwrapped
+            # utilities. If the result is something which is acquisition-unaware
+            # but unwrapped we wrap it on the context.
+            if IAcquirer.providedBy(obj) and \
+                    aq_parent(obj) is None and \
+                    IAcquirer.providedBy(utility):
+                utilty = utility.__of__(obj)
+            return utility
         except ComponentLookupError:
             # behave in backwards-compatible way
             # fall through to old implementation



More information about the Checkins mailing list