diff options
| author | Daniel Nouri <daniel.nouri@gmail.com> | 2011-02-28 16:13:47 +0100 |
|---|---|---|
| committer | Daniel Nouri <daniel.nouri@gmail.com> | 2011-02-28 16:13:47 +0100 |
| commit | ab19ea8a5372ac83c6f7a7d75d1ecca5ed2b025e (patch) | |
| tree | 4635c5c4396fe92022352a2d7314259553a40a36 | |
| parent | 8326c68388ecac91cdcb1dce268a61362be2e4c8 (diff) | |
| download | pyramid-ab19ea8a5372ac83c6f7a7d75d1ecca5ed2b025e.tar.gz pyramid-ab19ea8a5372ac83c6f7a7d75d1ecca5ed2b025e.tar.bz2 pyramid-ab19ea8a5372ac83c6f7a7d75d1ecca5ed2b025e.zip | |
'pyramid.url.resource_url' no longer quotes '@' in '*elements'.
See http://groups.google.com/group/pylons-discuss/browse_thread/thread/ebb8e0196858a48
| -rw-r--r-- | pyramid/tests/test_url.py | 8 | ||||
| -rw-r--r-- | pyramid/traversal.py | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/pyramid/tests/test_url.py b/pyramid/tests/test_url.py index 3c70e9028..e13fbbb91 100644 --- a/pyramid/tests/test_url.py +++ b/pyramid/tests/test_url.py @@ -49,6 +49,14 @@ class ResourceURLTests(unittest.TestCase): self.assertEqual(result, 'http://example.com/context/La%20Pe%C3%B1a') + def test_at_sign_in_element_names(self): + request = _makeRequest() + self._registerContextURL(request.registry) + context = DummyContext() + result = self._callFUT(context, request, '@@myview') + self.assertEqual(result, + 'http://example.com/context/@@myview') + def test_element_names_url_quoted(self): request = _makeRequest() self._registerContextURL(request.registry) diff --git a/pyramid/traversal.py b/pyramid/traversal.py index 0953ef313..03137330a 100644 --- a/pyramid/traversal.py +++ b/pyramid/traversal.py @@ -509,6 +509,7 @@ def traversal_path(path): return tuple(clean) _segment_cache = {} +path_safe = ':@&+$,' def quote_path_segment(segment): """ Return a quoted representation of a 'path segment' (such as @@ -540,9 +541,9 @@ def quote_path_segment(segment): return _segment_cache[segment] except KeyError: if segment.__class__ is unicode: # isinstance slighly slower (~15%) - result = url_quote(segment.encode('utf-8')) + result = url_quote(segment.encode('utf-8'), path_safe) else: - result = url_quote(str(segment)) + result = url_quote(str(segment), path_safe) # we don't need a lock to mutate _segment_cache, as the below # will generate exactly one Python bytecode (STORE_SUBSCR) _segment_cache[segment] = result |
