[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