diff options
| author | Laurence Rowe <laurence@lrowe.co.uk> | 2013-04-24 14:38:41 -0700 |
|---|---|---|
| committer | Laurence Rowe <laurence@lrowe.co.uk> | 2013-04-24 14:47:12 -0700 |
| commit | f3bffdfc35a5ecbb45b5f63bdb08bdc41553b63d (patch) | |
| tree | 320dac7ad7c51a79549ef9ad16f8eb3e9ce81ae7 | |
| parent | 1a48c8b7952d35b217c3adf3f6be11026fefd03b (diff) | |
| download | pyramid-f3bffdfc35a5ecbb45b5f63bdb08bdc41553b63d.tar.gz pyramid-f3bffdfc35a5ecbb45b5f63bdb08bdc41553b63d.tar.bz2 pyramid-f3bffdfc35a5ecbb45b5f63bdb08bdc41553b63d.zip | |
Consider superclass views after predicate mismatch
The merged fix for #786 only worked for views registered to an
interface.
| -rw-r--r-- | pyramid/router.py | 2 | ||||
| -rw-r--r-- | pyramid/tests/test_router.py | 8 |
2 files changed, 4 insertions, 6 deletions
diff --git a/pyramid/router.py b/pyramid/router.py index 63c12a1af..f780f6711 100644 --- a/pyramid/router.py +++ b/pyramid/router.py @@ -165,7 +165,7 @@ class Router(object): except PredicateMismatch: # look for other views that meet the predicate # criteria - for iface in context_iface.flattened(): + for iface in context_iface.__sro__[1:]: view_callable = adapters.lookup( (IViewClassifier, request.request_iface, iface), IView, name=view_name, default=None) diff --git a/pyramid/tests/test_router.py b/pyramid/tests/test_router.py index 432959147..b836d7d72 100644 --- a/pyramid/tests/test_router.py +++ b/pyramid/tests/test_router.py @@ -1180,11 +1180,9 @@ class TestRouter(unittest.TestCase): from pyramid.interfaces import IViewClassifier from pyramid.interfaces import IRequest, IResponse from pyramid.response import Response - from zope.interface import Interface, implementer - class IContext(Interface): + class BaseContext: pass - @implementer(IContext) - class DummyContext: + class DummyContext(BaseContext): pass context = DummyContext() self._registerTraverserFactory(context) @@ -1193,7 +1191,7 @@ class TestRouter(unittest.TestCase): DummyContext) good_view = DummyView('abc') self._registerView(self.config.derive_view(good_view), - '', IViewClassifier, IRequest, IContext) + '', IViewClassifier, IRequest, BaseContext) router = self._makeOne() def make_response(s): return Response(s) |
