[Zope-Checkins] SVN: Products.Five/branches/philikon-fix-lookup-priorities/traversable.py 1. Let's not be too ambitious and try to solve WebDAV issues that we don't know

Philipp von Weitershausen philikon at philikon.de
Sun Mar 26 11:37:31 EST 2006


Log message for revision 66177:
  1. Let's not be too ambitious and try to solve WebDAV issues that we don't know
     are actually there.
  2. ZPublisher now makes sure that the request has the default skin
  

Changed:
  U   Products.Five/branches/philikon-fix-lookup-priorities/traversable.py

-=-
Modified: Products.Five/branches/philikon-fix-lookup-priorities/traversable.py
===================================================================
--- Products.Five/branches/philikon-fix-lookup-priorities/traversable.py	2006-03-26 16:35:54 UTC (rev 66176)
+++ Products.Five/branches/philikon-fix-lookup-priorities/traversable.py	2006-03-26 16:37:30 UTC (rev 66177)
@@ -30,8 +30,6 @@
 from zExceptions import NotFound
 from ZPublisher import xmlrpc
 
-_marker = object
-
 class FakeRequest(dict):
     implements(IBrowserRequest)
 
@@ -57,8 +55,8 @@
         # behaviour as much as possible.  Therefore the first part of
         # this method is based on BaseRequest.traverse's behaviour:
         # 1. If an object has __bobo_traverse__, use it
-        # 2. Otherwise do attribute look-up (w/o acquisition if necessary)
-        # 3. If that doesn't work, try key item lookup.
+        # 2. Otherwise do attribute look-up or, if that doesn't work,
+        #    key item lookup.
 
         if hasattr(self, '__fallback_traverse__'):
             try:
@@ -66,39 +64,18 @@
             except (AttributeError, KeyError):
                 pass
         else:
-            # Note - no_acquire_flag is necessary to support things
-            # like DAV.  We have to make sure that the target object
-            # is not acquired if the request_method is other than GET
-            # or POST. Otherwise, you could never use PUT to add a new
-            # object named 'test' if an object 'test' existed above it
-            # in the heirarchy -- you'd always get the existing object
-            # :(
-            no_acquire_flag = False
-            method = REQUEST.get('REQUEST_METHOD', 'GET').upper()
-            if ((method not in ('GET', 'POST') or
-                 isinstance(getattr(REQUEST, 'response', {}), xmlrpc.Response))
-                and getattr(REQUEST, 'maybe_webdav_client', False)):
-                # Probably a WebDAV client.
-                no_acquire_flag = True
-
             try:
-                if (no_acquire_flag and
-                    len(REQUEST['TraversalRequestNameStack']) == 0 and
-                    hasattr(self, 'aq_base')):
-                    if hasattr(self.aq_base, name):
-                        return getattr(self, name)
-                    else:
-                        pass # attribute not found
-                else:
-                    return getattr(self, name)
+                return getattr(self, name)
             except AttributeError:
-                try:
-                    return self[name]
-                except (KeyError, IndexError, TypeError, AttributeError):
-                    pass # key not found
+                pass
 
+            try:
+                return self[name]
+            except (KeyError, IndexError, TypeError, AttributeError):
+                pass
+
         # This is the part Five adds:
-        # 4. If neither __bobo_traverse__ nor attribute/key look-up
+        # 3. If neither __bobo_traverse__ nor attribute/key look-up
         # work, we try to find a Zope 3-style view
 
         # For that we need to make sure we have a good request
@@ -108,15 +85,11 @@
             REQUEST = getattr(self, 'REQUEST', None)
             if not IBrowserRequest.providedBy(REQUEST):
                 REQUEST = FakeRequest()
+                setDefaultSkin(REQUEST)
 
         # Con Zope 3 into using Zope 2's checkPermission
         Products.Five.security.newInteraction()
 
-        # Set the default skin on the request if it doesn't have any
-        # layers set on it yet
-        if queryType(REQUEST, ILayer) is None:
-            setDefaultSkin(REQUEST)
-
         # Use the ITraverser adapter (which in turn uses ITraversable
         # adapters) to traverse to a view.  Note that we're mixing
         # object-graph and object-publishing traversal here, but Zope



More information about the Zope-Checkins mailing list