summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2013-07-15 19:43:26 -0700
committerMichael Merickel <michael@merickel.org>2013-07-15 19:43:26 -0700
commitab457f8d7d763ffb4d8c962d7cfe8328c62d390b (patch)
treee0e7b453eb434d338d09355d52be2c64ffbde8ba
parentb6d007065132ad313a0777eb89a71b6fbdc4bcdf (diff)
parent84b9027389615084eaf402f8f2aae2ec7199bd67 (diff)
downloadpyramid-ab457f8d7d763ffb4d8c962d7cfe8328c62d390b.tar.gz
pyramid-ab457f8d7d763ffb4d8c962d7cfe8328c62d390b.tar.bz2
pyramid-ab457f8d7d763ffb4d8c962d7cfe8328c62d390b.zip
Merge pull request #1046 from lrowe/skip-same-views
Avoid re-executing the same view when looking up context base views.
-rw-r--r--pyramid/router.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/pyramid/router.py b/pyramid/router.py
index 3d2a2ff3e..1a991648b 100644
--- a/pyramid/router.py
+++ b/pyramid/router.py
@@ -165,9 +165,13 @@ class Router(object):
# look for other views that meet the predicate
# criteria
for iface in context_iface.__sro__[1:]:
+ previous_view_callable = view_callable
view_callable = adapters.lookup(
(IViewClassifier, request.request_iface, iface),
IView, name=view_name, default=None)
+ # intermediate bases may lookup same view_callable
+ if view_callable is previous_view_callable:
+ continue
if view_callable is not None:
try:
response = view_callable(context, request)