[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