Chris McDonough
2011-09-10 f3b6a3653de8d6c33473d113ab8238eb40695632
look up the registry using a threadlocal for bw compatibility in existing (third-party) tests
2 files modified
15 ■■■■■ changed files
pyramid/config/views.py 6 ●●●● patch | view | raw | blame | history
pyramid/tests/test_config/test_views.py 9 ●●●●● patch | view | raw | blame | history
pyramid/config/views.py
@@ -34,6 +34,7 @@
from pyramid.httpexceptions import HTTPNotFound
from pyramid.security import NO_PERMISSION_REQUIRED
from pyramid.static import static_view
from pyramid.threadlocal import get_current_registry
from pyramid.view import render_view_to_response
from pyramid.config.util import DEFAULT_PHASH
@@ -1411,7 +1412,10 @@
        return reg
    def generate(self, path, request, **kw):
        registry = request.registry
        try:
            registry = request.registry
        except AttributeError: # bw compat (for tests)
            registry = get_current_registry()
        for (url, spec, route_name) in self._get_registrations(registry):
            if path.startswith(spec):
                subpath = path[len(spec):]
pyramid/tests/test_config/test_views.py
@@ -3301,6 +3301,15 @@
        result = inst.generate('package:path/abc', request)
        self.assertEqual(result, 'http://example.com/foo/abc')
    def test_generate_registration_no_registry_on_request(self):
        inst = self._makeOne()
        registrations = [('http://example.com/foo/', 'package:path/', None)]
        inst._get_registrations = lambda *x: registrations
        request = self._makeRequest()
        del request.registry
        result = inst.generate('package:path/abc', request)
        self.assertEqual(result, 'http://example.com/foo/abc')
    def test_generate_slash_in_name1(self):
        inst = self._makeOne()
        registrations = [('http://example.com/foo/', 'package:path/', None)]