summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/config/views.py3
-rw-r--r--pyramid/tests/test_config/test_views.py18
2 files changed, 18 insertions, 3 deletions
diff --git a/pyramid/config/views.py b/pyramid/config/views.py
index 9b277dafb..a88c22b12 100644
--- a/pyramid/config/views.py
+++ b/pyramid/config/views.py
@@ -1,4 +1,5 @@
import inspect
+import operator
from zope.interface import Interface
from zope.interface import classProvides
@@ -481,7 +482,7 @@ class MultiView(object):
if accept is None or '*' in accept:
self.views.append((order, view, phash))
- self.views.sort(key=lambda x: x[0])
+ self.views.sort(key=operator.itemgetter(0))
else:
subset = self.media_views.setdefault(accept, [])
subset.append((order, view, phash))
diff --git a/pyramid/tests/test_config/test_views.py b/pyramid/tests/test_config/test_views.py
index 0813eecdb..fa263a311 100644
--- a/pyramid/tests/test_config/test_views.py
+++ b/pyramid/tests/test_config/test_views.py
@@ -1844,9 +1844,23 @@ class TestMultiView(unittest.TestCase):
mv.add('view', 100, phash='abc')
self.assertEqual(mv.views, [(100, 'view', 'abc')])
mv.add('view', 100, phash='def')
- self.assertEqual(mv.views, [(100, 'view', 'abc'), (100, 'view', 'def')])
+ self.assertEqual(mv.views, [(100, 'view', 'abc'),
+ (100, 'view', 'def')])
mv.add('view', 100, phash='abc')
- self.assertEqual(mv.views, [(100, 'view', 'abc'), (100, 'view', 'def')])
+ self.assertEqual(mv.views, [(100, 'view', 'abc'),
+ (100, 'view', 'def')])
+
+ def test_multiple_with_functions_as_views(self):
+ # this failed on py3 at one point, because functions aren't orderable
+ # and we were sorting the views via a plain sort() rather than
+ # sort(key=itemgetter(0)).
+ def view1(request): pass
+ def view2(request): pass
+ mv = self._makeOne()
+ mv.add(view1, 100, None)
+ self.assertEqual(mv.views, [(100, view1, None)])
+ mv.add(view2, 100, None)
+ self.assertEqual(mv.views, [(100, view1, None), (100, view2, None)])
def test_get_views_request_has_no_accept(self):
request = DummyRequest()