[Checkins] SVN: five.localsitemanager/branches/global-request-container/s GlobalRequestContainer for base of utility aq_chain.

Lawrence Rowe cvs-admin at zope.org
Wed Sep 5 17:59:49 UTC 2012


Log message for revision 127722:
  GlobalRequestContainer for base of utility aq_chain.

Changed:
  U   five.localsitemanager/branches/global-request-container/setup.py
  U   five.localsitemanager/branches/global-request-container/src/five/localsitemanager/configure.zcml
  U   five.localsitemanager/branches/global-request-container/src/five/localsitemanager/localsitemanager.txt
  U   five.localsitemanager/branches/global-request-container/src/five/localsitemanager/registry.py

-=-
Modified: five.localsitemanager/branches/global-request-container/setup.py
===================================================================
--- five.localsitemanager/branches/global-request-container/setup.py	2012-09-05 17:55:04 UTC (rev 127721)
+++ five.localsitemanager/branches/global-request-container/setup.py	2012-09-05 17:59:45 UTC (rev 127722)
@@ -28,6 +28,7 @@
       install_requires=[
           'Acquisition',
           'ZODB3',
+          'five.globalrequest',
           'setuptools',
           'zope.component',
           'zope.event',

Modified: five.localsitemanager/branches/global-request-container/src/five/localsitemanager/configure.zcml
===================================================================
--- five.localsitemanager/branches/global-request-container/src/five/localsitemanager/configure.zcml	2012-09-05 17:55:04 UTC (rev 127721)
+++ five.localsitemanager/branches/global-request-container/src/five/localsitemanager/configure.zcml	2012-09-05 17:59:45 UTC (rev 127722)
@@ -2,6 +2,8 @@
     xmlns="http://namespaces.zope.org/zope"
     xmlns:browser="http://namespaces.zope.org/browser">
 
+  <include package="five.globalrequest" />
+
   <subscriber
       for="Products.Five.component.interfaces.IObjectManagerSite
            zope.lifecycleevent.interfaces.IObjectMovedEvent"

Modified: five.localsitemanager/branches/global-request-container/src/five/localsitemanager/localsitemanager.txt
===================================================================
--- five.localsitemanager/branches/global-request-container/src/five/localsitemanager/localsitemanager.txt	2012-09-05 17:55:04 UTC (rev 127721)
+++ five.localsitemanager/branches/global-request-container/src/five/localsitemanager/localsitemanager.txt	2012-09-05 17:59:45 UTC (rev 127722)
@@ -317,7 +317,8 @@
     >>> si_util.getPhysicalPath()
     ('', 'a', 'b', 'si_util')
     >>> si_util.aq_chain
-    [<SITestUtility at /a/b/si_util>, <Folder at /a/b>, <Folder at /a>, <Application at >]
+    [<SITestUtility at /a/b/si_util>, <Folder at /a/b>, <Folder at /a>, <Application at >,
+     <five.localsitemanager.registry.GlobalRequestContainer object at ...>]
     >>> si_util.absolute_url()
     'a/b/si_util'
 

Modified: five.localsitemanager/branches/global-request-container/src/five/localsitemanager/registry.py
===================================================================
--- five.localsitemanager/branches/global-request-container/src/five/localsitemanager/registry.py	2012-09-05 17:55:04 UTC (rev 127721)
+++ five.localsitemanager/branches/global-request-container/src/five/localsitemanager/registry.py	2012-09-05 17:59:45 UTC (rev 127722)
@@ -29,6 +29,7 @@
 from zope.component.persistentregistry import PersistentComponents
 from zope.component.registry import _getUtilityProvided
 from zope.component.registry import UtilityRegistration
+from zope.globalrequest import getRequest
 from zope.interface.adapter import _lookup
 from zope.interface.adapter import _lookupAll
 from zope.interface.adapter import _subscriptions
@@ -40,6 +41,18 @@
 _marker = object()
 
 
+class GlobalRequestContainer(RequestContainer):
+    @property
+    def REQUEST(self):
+        request = getRequest()
+        if request is None:
+            raise AttributeError('REQUEST')
+        return request
+
+
+_GlobalRequestContainerInstance = GlobalRequestContainer()
+
+
 class FiveVerifyingAdapterLookup(VerifyingAdapterLookup):
 
     # override some AdapterLookupBase methods for acquisition wrapping
@@ -192,8 +205,10 @@
     obj = Acquisition.aq_inner(obj)
     base = Acquisition.aq_base(obj)
     parent = Acquisition.aq_parent(obj)
-    if parent is None or isinstance(parent, RequestContainer):
+    if parent is None:
         return base
+    if isinstance(parent, RequestContainer):
+        parent = _GlobalRequestContainerInstance
     return base.__of__(_rewrap(parent))
 
 



More information about the checkins mailing list