diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-11-10 20:46:44 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-11-10 20:46:44 +0000 |
| commit | 6d4015c5d9f5ddeb60d162d385579176a44d8be3 (patch) | |
| tree | b2e51684e6bcdeff34b24918e067f7e7e118ed81 | |
| parent | e3e6ac2797146dcd9d3176906aafac62fb9d92e9 (diff) | |
| download | pyramid-6d4015c5d9f5ddeb60d162d385579176a44d8be3.tar.gz pyramid-6d4015c5d9f5ddeb60d162d385579176a44d8be3.tar.bz2 pyramid-6d4015c5d9f5ddeb60d162d385579176a44d8be3.zip | |
- The ``model_path`` and ``model_url`` traversal APIs returned the
wrong value for the root object (e.g. ``model_path`` returned
``''`` for the root object, while it should have been returning
``'/'``).
Prep for 0.4.6.
| -rw-r--r-- | CHANGES.txt | 9 | ||||
| -rw-r--r-- | docs/conf.py | 4 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_traversal.py | 21 | ||||
| -rw-r--r-- | repoze/bfg/traversal.py | 15 | ||||
| -rw-r--r-- | setup.py | 2 |
5 files changed, 43 insertions, 8 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 72b1b2699..b56c86879 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,12 @@ +0.4.6 (11/10/2008) + + Bug Fixes + + - The ``model_path`` and ``model_url`` traversal APIs returned the + wrong value for the root object (e.g. ``model_path`` returned + ``''`` for the root object, while it should have been returning + ``'/'``). + 0.4.5 (11/9/2008) Features diff --git a/docs/conf.py b/docs/conf.py index 97da9648b..5a109946f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,9 +51,9 @@ copyright = '2008, Agendaless Consulting' # other places throughout the built documents. # # The short X.Y version. -version = '0.4.5' +version = '0.4.6' # The full version, including alpha/beta/rc tags. -release = '0.4.5' +release = '0.4.6' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py index 4dced41ca..be75ed646 100644 --- a/repoze/bfg/tests/test_traversal.py +++ b/repoze/bfg/tests/test_traversal.py @@ -189,6 +189,16 @@ class ModelURLTests(unittest.TestCase): result, 'http://example.com:5432/foo%20/bar/baz/this/theotherthing/that') + def test_root(self): + root = DummyContext() + root.__parent__ = None + root.__name__ = None + model_url = self._getFUT() + request = DummyRequest() + result = model_url(root, request) + self.assertEqual(result, 'http://example.com:5432/') + + class FindRootTests(unittest.TestCase): def _getFUT(self): from repoze.bfg.traversal import find_root @@ -279,12 +289,19 @@ class ModelPathTests(unittest.TestCase): bar.__name__ = 'bar' baz.__parent__ = bar baz.__name__ = 'baz' - request = DummyRequest() model_path = self._getFUT() - request = DummyRequest() result = model_path(baz, 'this/theotherthing', 'that') self.assertEqual(result, '/foo /bar/baz/this/theotherthing/that') + def test_root(self): + root = DummyContext() + root.__parent__ = None + root.__name__ = None + model_path = self._getFUT() + request = DummyRequest() + result = model_path(root) + self.assertEqual(result, '/') + def make_traverser(*args): class DummyTraverser(object): diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index f7647879b..29677fe99 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -103,6 +103,14 @@ def find_interface(model, interface): if interface.providedBy(location): return location +def _pjoin(path): + path = list(path) + path.insert(0, '') + result = '/'.join(path) + if not result: + result = '/' + return result + def model_url(model, request, *elements): """ Return the absolute URL of the model object based on the ``wsgi.url_scheme``, ``HTTP_HOST`` or ``SERVER_NAME`` in the @@ -117,7 +125,7 @@ def model_url(model, request, *elements): rpath.append(urllib.quote(location.__name__)) path = list(reversed(rpath)) path.extend(elements) - path = '/'.join(path) + path = _pjoin(path) return urlparse.urljoin(request.application_url, path) def model_path(model, *elements): @@ -132,5 +140,6 @@ def model_path(model, *elements): rpath.append(location.__name__) path = list(reversed(rpath)) path.extend(elements) - path.insert(0, '') - return '/'.join(path) + path = _pjoin(path) + return path + @@ -12,7 +12,7 @@ # ############################################################################## -__version__ = '0.4.5' +__version__ = '0.4.6' import os |
