From 7ecc829f5a78e2a04a64cc9a44d46a151b171554 Mon Sep 17 00:00:00 2001 From: Michael Merickel <michael@merickel.org> Date: Sun, 21 Aug 2011 03:38:10 +0200 Subject: [PATCH] Reversed the priority to match the last added route when multiple routes have the same placeholder requirements. --- pyramid/tests/test_urldispatch.py | 2 +- pyramid/urldispatch.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pyramid/tests/test_urldispatch.py b/pyramid/tests/test_urldispatch.py index c49fba9..3beec6e 100644 --- a/pyramid/tests/test_urldispatch.py +++ b/pyramid/tests/test_urldispatch.py @@ -178,7 +178,7 @@ group.add(route1) path, kw = group.gen(request, (), {'a':1, 'b':2, 'c':3}) - self.assertEqual(path, '/p/1/2/3') + self.assertEqual(path, '/1/2/3') self.assertEqual(kw, {'a':1, 'b':2, 'c':3}) class RoutesMapperTests(unittest.TestCase): diff --git a/pyramid/urldispatch.py b/pyramid/urldispatch.py index 5eee623..d7fa913 100644 --- a/pyramid/urldispatch.py +++ b/pyramid/urldispatch.py @@ -52,7 +52,7 @@ self.routes = [] self.sorted_routes = [] - def _match_route(self, request, elements, kw): + def _find_best_match(self, request, elements, kw): """ Compare the provided keys to the required args of a route. The selected route is the first one with all required keys satisfied. @@ -71,7 +71,7 @@ 'provided keys "%s"' % (self.name, sorted(keys))) def gen(self, request, elements, kw): - route, elements, kw = self._match_route(request, elements, kw) + route, elements, kw = self._find_best_match(request, elements, kw) path = route.generate(kw) @@ -89,7 +89,8 @@ args = frozenset(route.args) # -len(args) sorts routes in descending order by the number of args - entry = (-len(args), next(self.counter), args, route) + # -next(self.counter) sorts routes in reverse order of adding + entry = (-len(args), -next(self.counter), args, route) insort(self.sorted_routes, entry) class RoutesMapper(object): -- Gitblit v1.9.3