summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2012-11-18 21:47:32 -0500
committerChris McDonough <chrism@plope.com>2012-11-18 21:47:32 -0500
commit0ccdc23f6ec53548bb1f81f3b528f2a8be0a5467 (patch)
tree529619563687e0689f77c5ea65a55448551d3a6c
parent3ae2a829c17ebe3dd1a2db547d9ad4cb39feb8cb (diff)
downloadpyramid-0ccdc23f6ec53548bb1f81f3b528f2a8be0a5467.tar.gz
pyramid-0ccdc23f6ec53548bb1f81f3b528f2a8be0a5467.tar.bz2
pyramid-0ccdc23f6ec53548bb1f81f3b528f2a8be0a5467.zip
- A failure when trying to locate the attribute ``__text__`` on route and view
predicates existed when the ``debug_routematch`` setting was true or when the ``pviews`` command was used. See https://github.com/Pylons/pyramid/pull/727 Closes #727.
-rw-r--r--CHANGES.txt10
-rw-r--r--pyramid/config/util.py8
-rw-r--r--pyramid/router.py2
-rw-r--r--pyramid/scripts/pviews.py2
-rw-r--r--pyramid/tests/test_router.py17
-rw-r--r--pyramid/tests/test_scripts/test_pviews.py2
6 files changed, 33 insertions, 8 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 9f5ce064f..f5c5c9449 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,13 @@
+Next release
+============
+
+Bug Fixes
+---------
+
+- A failure when trying to locate the attribute ``__text__`` on route and view
+ predicates existed when the ``debug_routematch`` setting was true or when the
+ ``pviews`` command was used. See https://github.com/Pylons/pyramid/pull/727
+
1.4a4 (2012-11-14)
==================
diff --git a/pyramid/config/util.py b/pyramid/config/util.py
index c16755a75..a83e23798 100644
--- a/pyramid/config/util.py
+++ b/pyramid/config/util.py
@@ -42,8 +42,12 @@ class PredicateList(object):
## weighs_more_than = self.last_added or FIRST
## weighs_less_than = LAST
self.last_added = name
- self.sorter.add(name, factory, after=weighs_more_than,
- before=weighs_less_than)
+ self.sorter.add(
+ name,
+ factory,
+ after=weighs_more_than,
+ before=weighs_less_than,
+ )
def make(self, config, **kw):
# Given a configurator and a list of keywords, a predicate list is
diff --git a/pyramid/router.py b/pyramid/router.py
index 0c7f61071..9b6138ea9 100644
--- a/pyramid/router.py
+++ b/pyramid/router.py
@@ -103,7 +103,7 @@ class Router(object):
request.path_info,
route.pattern,
match,
- ', '.join([p.__text__ for p in route.predicates]))
+ ', '.join([p.text() for p in route.predicates]))
)
logger and logger.debug(msg)
diff --git a/pyramid/scripts/pviews.py b/pyramid/scripts/pviews.py
index a9db59dc1..60aecb9bb 100644
--- a/pyramid/scripts/pviews.py
+++ b/pyramid/scripts/pviews.py
@@ -187,7 +187,7 @@ class PViewsCommand(object):
self.out("%sroute pattern: %s" % (indent, route.pattern))
self.out("%sroute path: %s" % (indent, route.path))
self.out("%ssubpath: %s" % (indent, '/'.join(attrs['subpath'])))
- predicates = ', '.join([p.__text__ for p in route.predicates])
+ predicates = ', '.join([p.text() for p in route.predicates])
if predicates != '':
self.out("%sroute predicates (%s)" % (indent, predicates))
diff --git a/pyramid/tests/test_router.py b/pyramid/tests/test_router.py
index 778b27473..65152ca05 100644
--- a/pyramid/tests/test_router.py
+++ b/pyramid/tests/test_router.py
@@ -24,7 +24,7 @@ class TestRouter(unittest.TestCase):
if mapper is None:
mapper = RoutesMapper()
self.registry.registerUtility(mapper, IRoutesMapper)
- mapper.connect(name, path, factory)
+ return mapper.connect(name, path, factory)
def _registerLogger(self):
from pyramid.interfaces import IDebugLogger
@@ -657,7 +657,8 @@ class TestRouter(unittest.TestCase):
root = object()
def factory(request):
return root
- self._connectRoute('foo', 'archives/:action/:article', factory)
+ route = self._connectRoute('foo', 'archives/:action/:article', factory)
+ route.predicates = [DummyPredicate()]
context = DummyContext()
self._registerTraverserFactory(context)
response = DummyResponse()
@@ -686,7 +687,11 @@ class TestRouter(unittest.TestCase):
"route matched for url http://localhost:8080"
"/archives/action1/article1; "
"route_name: 'foo', "
- "path_info: "))
+ "path_info: ")
+ )
+ self.assertTrue(
+ "predicates: 'predicate'" in logger.messages[0]
+ )
def test_call_route_match_miss_debug_routematch(self):
from pyramid.httpexceptions import HTTPNotFound
@@ -1159,6 +1164,12 @@ class TestRouter(unittest.TestCase):
start_response = DummyStartResponse()
self.assertRaises(RuntimeError, router, environ, start_response)
+class DummyPredicate(object):
+ def __call__(self, info, request):
+ return True
+ def text(self):
+ return 'predicate'
+
class DummyContext:
pass
diff --git a/pyramid/tests/test_scripts/test_pviews.py b/pyramid/tests/test_scripts/test_pviews.py
index 6a919c31b..266d1ec90 100644
--- a/pyramid/tests/test_scripts/test_pviews.py
+++ b/pyramid/tests/test_scripts/test_pviews.py
@@ -379,7 +379,7 @@ class TestPViewsCommand(unittest.TestCase):
L = []
command.out = L.append
def predicate(): pass
- predicate.__text__ = "predicate = x"
+ predicate.text = lambda *arg: "predicate = x"
route = dummy.DummyRoute('a', '/a', matchdict={}, predicate=predicate)
view = dummy.DummyView(context='context', view_name='a',
matched_route=route, subpath='')