[z3-checkins] r5685 - z3/Five/branch/dc-experiments
philikon at codespeak.net
philikon at codespeak.net
Mon Jul 26 15:33:24 MEST 2004
Author: philikon
Date: Mon Jul 26 15:33:24 2004
New Revision: 5685
Removed:
z3/Five/branch/dc-experiments/traversable.py
Log:
Remove prematurely copied file; will be replaced soon with a copy
that has revision history
Deleted: /z3/Five/branch/dc-experiments/traversable.py
==============================================================================
--- /z3/Five/branch/dc-experiments/traversable.py Mon Jul 26 15:33:24 2004
+++ (empty file)
@@ -1,91 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2004 Five Contributors. All rights reserved.
-#
-# This software is distributed under the terms of the Zope Public
-# License (ZPL) v2.1. See COPYING.txt for more information.
-#
-##############################################################################
-"""Machinery for making things traversable through adaptation
-
-$Id: traversable.py 5654 2004-07-24 20:35:55Z dreamcatcher $
-"""
-from zope.exceptions import NotFoundError
-from zope.component import getView, ComponentLookupError
-from zope.interface import implements
-from zope.publisher.interfaces.browser import IBrowserRequest
-from zope.app.traversing.interfaces import ITraverser, ITraversable
-from zope.app.traversing.adapters import DefaultTraversable
-from zope.app.traversing.namespace import queryResourceInContext
-from monkey import DebugFlags
-
-class FakeRequest:
- implements(IBrowserRequest)
-
- debug = DebugFlags()
-
- def getPresentationSkin(self):
- return None
-
-class Traversable:
- """A mixin to make an object traversable using an ITraverser adapter.
- """
- __five_traversable__ = True
-
- def __fallback_traverse__(self, REQUEST, name):
- """Method hook for fallback traversal
-
- This method is called by __bobo_traverse___ when Zope3-style
- ITraverser traversal fails. By default, we do what Zope 2 would do,
- raise a NotFound error.
- """
- try:
- REQUEST.RESPONSE.notFoundError("%s " % name)
- except AttributeError:
- raise KeyError, name
-
- def __bobo_traverse__(self, REQUEST, name):
- """Hook for Zope 2 traversal
-
- This method is called by Zope 2's ZPublisher upon traversal.
- It allows us to trick it into faking the Zope 3 traversal system
- by using an ITraverser adapter.
- """
- if not IBrowserRequest.providedBy(REQUEST):
- REQUEST = FakeRequest()
- try:
- kw = dict(path=[name], request=REQUEST)
- return ITraverser(self).traverse(**kw).__of__(self)
- except (ComponentLookupError, NotFoundError, AttributeError):
- pass
- try:
- return getattr(self, name)
- except AttributeError:
- pass
- try:
- return self[name]
- except (AttributeError, KeyError):
- pass
- return self.__fallback_traverse__(REQUEST, name)
-
-class FiveTraversable(DefaultTraversable):
-
- def traverse(self, name, furtherPath):
- context = self._subject
- __traceback_info__ = (context, name, furtherPath)
- # Find the REQUEST
- REQUEST = getattr(context, 'REQUEST', None)
- if not IBrowserRequest.providedBy(REQUEST):
- REQUEST = FakeRequest()
- # Try to lookup a view first
- try:
- return getView(context, name, REQUEST).__of__(context)
- except ComponentLookupError:
- pass
- # If a view can't be found, try to lookup a resource
- resource = queryResourceInContext(context, name, REQUEST)
- if resource is not None:
- return resource
- # If a resource can't be found, then use default traversable
- return super(FiveTraversable, self).traverse(name, furtherPath)
-
More information about the z3-checkins
mailing list