[Checkins] SVN: zope.app.publication/trunk/src/zope/app/publication/ PublicationTraverser moved to zope.traversing

Shane Hathaway shane at hathawaymix.org
Fri May 22 20:43:45 EDT 2009


Log message for revision 100266:
  PublicationTraverser moved to zope.traversing
  

Changed:
  U   zope.app.publication/trunk/src/zope/app/publication/browser.py
  U   zope.app.publication/trunk/src/zope/app/publication/publicationtraverse.py

-=-
Modified: zope.app.publication/trunk/src/zope/app/publication/browser.py
===================================================================
--- zope.app.publication/trunk/src/zope/app/publication/browser.py	2009-05-23 00:42:45 UTC (rev 100265)
+++ zope.app.publication/trunk/src/zope/app/publication/browser.py	2009-05-23 00:43:45 UTC (rev 100266)
@@ -24,27 +24,17 @@
 from zope.publisher.interfaces.browser import IBrowserPublisher
 from zope.security.checker import ProxyFactory
 
-from zope.app.publication.publicationtraverse \
-     import PublicationTraverser as PublicationTraverser_
 from zope.app.publication.http import BaseHTTPPublication
 
+import zope.deferredimport
 
-class PublicationTraverser(PublicationTraverser_):
+zope.deferredimport.deprecatedFrom(
+    "This import has moved to zope.traversing.publicationtraverse. "
+    "This import will stop working in the future.",
+    'zope.traversing.publicationtraverse',
+    'PublicationTraverser',
+    )
 
-    def traverseRelativeURL(self, request, ob, path):
-        ob = self.traversePath(request, ob, path)
-
-        while True:
-            adapter = IBrowserPublisher(ob, None)
-            if adapter is None:
-                return ob
-            ob, path = adapter.browserDefault(request)
-            ob = ProxyFactory(ob)
-            if not path:
-                return ob
-
-            ob = self.traversePath(request, ob, path)
-
 class BrowserPublication(BaseHTTPPublication):
     """Web browser publication handling."""
 

Modified: zope.app.publication/trunk/src/zope/app/publication/publicationtraverse.py
===================================================================
--- zope.app.publication/trunk/src/zope/app/publication/publicationtraverse.py	2009-05-23 00:42:45 UTC (rev 100265)
+++ zope.app.publication/trunk/src/zope/app/publication/publicationtraverse.py	2009-05-23 00:43:45 UTC (rev 100266)
@@ -11,87 +11,21 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-"""Publication Traverser
+"""Backwards compatibility: moved this module to
+`zope.traversing.publicationtraverse`.
 
 $Id$
 """
 __docformat__ = 'restructuredtext'
-from types import StringTypes
 
-from zope.component import queryMultiAdapter
-from zope.publisher.interfaces import NotFound
-from zope.security.checker import ProxyFactory
-from zope.traversing.namespace import namespaceLookup
-from zope.traversing.namespace import nsParse
-from zope.traversing.interfaces import TraversalError
-from zope.publisher.interfaces import IPublishTraverse
+import zope.deferredimport
 
-class DuplicateNamespaces(Exception):
-    """More than one namespace was specified in a request"""
-
-class UnknownNamespace(Exception):
-    """A parameter specified an unknown namespace"""
-
-class PublicationTraverse(object):
-
-    def traverseName(self, request, ob, name):
-        nm = name # the name to look up the object with
-
-        if name and name[:1] in '@+':
-            # Process URI segment parameters.
-            ns, nm = nsParse(name)
-            if ns:
-                try:
-                    ob2 = namespaceLookup(ns, nm, ob, request)
-                except TraversalError:
-                    raise NotFound(ob, name)
-
-                return ProxyFactory(ob2)
-
-        if nm == '.':
-            return ob
-
-        if IPublishTraverse.providedBy(ob):
-            ob2 = ob.publishTraverse(request, nm)
-        else:
-            # self is marker
-            adapter = queryMultiAdapter((ob, request), IPublishTraverse,
-                                        default=self)
-            if adapter is not self:
-                ob2 = adapter.publishTraverse(request, nm)
-            else:
-                raise NotFound(ob, name, request)
-
-        return ProxyFactory(ob2)
-
-class PublicationTraverser(PublicationTraverse):
-
-    def traversePath(self, request, ob, path):
-
-        if isinstance(path, StringTypes):
-            path = path.split('/')
-            if len(path) > 1 and not path[-1]:
-                # Remove trailing slash
-                path.pop()
-        else:
-            path = list(path)
-
-        # Remove single dots
-        path = [x for x in path if x != '.']
-
-        path.reverse()
-
-        # Remove double dots
-        while '..' in path:
-            l = path.index('..')
-            if l < 0 or l+2 > len(path):
-                break
-            del path[l:l+2]
-
-        pop = path.pop
-
-        while path:
-            name = pop()
-            ob = self.traverseName(request, ob, name)
-
-        return ob
+zope.deferredimport.deprecatedFrom(
+    "This module has moved to zope.traversing. This import will stop "
+    "working in the future.",
+    'zope.traversing.publicationtraverse',
+    'DuplicateNamespaces',
+    'UnknownNamespace',
+    'PublicationTraverse',
+    'PublicationTraverser',
+    )



More information about the Checkins mailing list