From fecc12e7e7e7f9cc40faa0f819e5a17f529e310c Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 5 Nov 2010 03:09:47 -0400 Subject: - Move the functionality of pyramid.personality.pylons into the paster templates themselves. - Remove pyramid.personality.pylons. - Remove unused cache configuration settings. --- .../pylons_basic/+package+/__init__.py_tmpl | 6 +-- .../pylons_basic/+package+/lib/subscribers.py_tmpl | 27 +++++++++++ .../pylons_basic/development.ini_tmpl | 6 --- .../pylons_minimal/+package+/__init__.py_tmpl | 5 +- .../pylons_minimal/+package+/subscribers.py_tmpl | 24 ++++++++++ .../pylons_minimal/development.ini_tmpl | 6 --- .../pylons_sqla/+package+/__init__.py_tmpl | 5 +- .../pylons_sqla/+package+/subscribers.py_tmpl | 26 +++++++++++ .../pylons_sqla/development.ini_tmpl | 6 --- pyramid/personality/__init__.py | 1 - pyramid/personality/pylons.py | 25 ---------- pyramid/tests/test_pylons_personality.py | 54 ---------------------- 12 files changed, 83 insertions(+), 108 deletions(-) create mode 100644 pyramid/paster_templates/pylons_basic/+package+/lib/subscribers.py_tmpl create mode 100644 pyramid/paster_templates/pylons_minimal/+package+/subscribers.py_tmpl create mode 100644 pyramid/paster_templates/pylons_sqla/+package+/subscribers.py_tmpl delete mode 100644 pyramid/personality/__init__.py delete mode 100644 pyramid/personality/pylons.py delete mode 100644 pyramid/tests/test_pylons_personality.py diff --git a/pyramid/paster_templates/pylons_basic/+package+/__init__.py_tmpl b/pyramid/paster_templates/pylons_basic/+package+/__init__.py_tmpl index b8f5219a7..5200e1206 100644 --- a/pyramid/paster_templates/pylons_basic/+package+/__init__.py_tmpl +++ b/pyramid/paster_templates/pylons_basic/+package+/__init__.py_tmpl @@ -1,6 +1,4 @@ from pyramid_beaker import session_factory_from_settings -from pyramid.personality.pylons import renderer_globals_factory_config -from {{package}}.lib import helpers def main(global_config, **settings): """ This function returns a Pyramid WSGI application. @@ -10,13 +8,13 @@ def main(global_config, **settings): config.begin() session_factory = session_factory_from_settings(settings) config.set_session_factory(session_factory) - globals_factory = renderer_globals_factory_config(helpers) - config.set_renderer_globals_factory(globals_factory) # XXX add caching setup config.add_static_view('static', '{{package}}:static/') config.add_handler('action', '/{action}', '{{package}}.handlers.hello:HelloHandler') config.add_handler('home', '/', '{{package}}.handlers.hello:HelloHandler', action='index') + config.add_subscriber('{{package}}.lib.subscribers.add_renderer_globals', + 'pyramid.events.BeforeRender') config.end() return config.make_wsgi_app() diff --git a/pyramid/paster_templates/pylons_basic/+package+/lib/subscribers.py_tmpl b/pyramid/paster_templates/pylons_basic/+package+/lib/subscribers.py_tmpl new file mode 100644 index 000000000..2fe053711 --- /dev/null +++ b/pyramid/paster_templates/pylons_basic/+package+/lib/subscribers.py_tmpl @@ -0,0 +1,27 @@ +from pyramid.threadlocal import get_current_request +from pyramid.exceptions import ConfigurationError +from pyramid.url import route_url +from {{package}}.lib import helpers + +def add_renderer_globals(event): + """ A subscriber to the ``pyramid.events.BeforeRender`` events. Updates + the :term:`renderer globals` with values that are familiar to Pylons + users.""" + request = event.get('request') + if request is None: + request = get_current_request() + globs = { + 'url': route_url, + 'h':helpers, + } + if request is not None: + tmpl_context = request.tmpl_context + globs['c'] = tmpl_context + globs['tmpl_context'] = tmpl_context + try: + globs['session'] = request.session + except ConfigurationError: + pass + event.update(globs) + + diff --git a/pyramid/paster_templates/pylons_basic/development.ini_tmpl b/pyramid/paster_templates/pylons_basic/development.ini_tmpl index 7e5b64fa3..e147ba76d 100644 --- a/pyramid/paster_templates/pylons_basic/development.ini_tmpl +++ b/pyramid/paster_templates/pylons_basic/development.ini_tmpl @@ -11,12 +11,6 @@ session.data_dir = %(here)s/data/sessions/data session.lock_dir = %(here)s/data/sessions/lock session.key = {{project}} session.secret = your_app_secret_string -cache.regions = default_term, second, short_term, long_term -cache.type = memory -cache.second.expire = 1 -cache.short_term.expire = 60 -cache.default_term.expire = 300 -cache.long_term.expire = 3600 [pipeline:main] pipeline = egg:WebError#evalerror diff --git a/pyramid/paster_templates/pylons_minimal/+package+/__init__.py_tmpl b/pyramid/paster_templates/pylons_minimal/+package+/__init__.py_tmpl index f47060997..e2f94c6fe 100644 --- a/pyramid/paster_templates/pylons_minimal/+package+/__init__.py_tmpl +++ b/pyramid/paster_templates/pylons_minimal/+package+/__init__.py_tmpl @@ -1,5 +1,4 @@ from pyramid_beaker import session_factory_from_settings -from pyramid.personality.pylons import renderer_globals_factory_config def main(global_config, **settings): """ This function returns a Pyramid WSGI application. @@ -10,12 +9,12 @@ def main(global_config, **settings): session_factory = session_factory_from_settings(settings) config.set_session_factory(session_factory) # XXX add caching setup - globals_factory = renderer_globals_factory_config(None) - config.set_renderer_globals_factory(globals_factory) config.add_static_view('static', '{{package}}:static/') config.add_handler('action', '/{action}', '{{package}}.handlers:MyHandler') config.add_handler('home', '/', '{{package}}.handlers:MyHandler', action='index') + config.add_subscriber('{{package}}.subscribers.add_renderer_globals', + 'pyramid.events.BeforeRender') config.end() return config.make_wsgi_app() diff --git a/pyramid/paster_templates/pylons_minimal/+package+/subscribers.py_tmpl b/pyramid/paster_templates/pylons_minimal/+package+/subscribers.py_tmpl new file mode 100644 index 000000000..ace5df3de --- /dev/null +++ b/pyramid/paster_templates/pylons_minimal/+package+/subscribers.py_tmpl @@ -0,0 +1,24 @@ +from pyramid.threadlocal import get_current_request +from pyramid.exceptions import ConfigurationError +from pyramid.url import route_url + +def add_renderer_globals(event): + """ A subscriber to the ``pyramid.events.BeforeRender`` events. Updates + the :term:`renderer globals` with values that are familiar to Pylons + users.""" + request = event.get('request') + if request is None: + request = get_current_request() + globs = { + 'url': route_url, + 'h':None, + } + if request is not None: + tmpl_context = request.tmpl_context + globs['c'] = tmpl_context + globs['tmpl_context'] = tmpl_context + try: + globs['session'] = request.session + except ConfigurationError: + pass + event.update(globs) diff --git a/pyramid/paster_templates/pylons_minimal/development.ini_tmpl b/pyramid/paster_templates/pylons_minimal/development.ini_tmpl index 7e5b64fa3..e147ba76d 100644 --- a/pyramid/paster_templates/pylons_minimal/development.ini_tmpl +++ b/pyramid/paster_templates/pylons_minimal/development.ini_tmpl @@ -11,12 +11,6 @@ session.data_dir = %(here)s/data/sessions/data session.lock_dir = %(here)s/data/sessions/lock session.key = {{project}} session.secret = your_app_secret_string -cache.regions = default_term, second, short_term, long_term -cache.type = memory -cache.second.expire = 1 -cache.short_term.expire = 60 -cache.default_term.expire = 300 -cache.long_term.expire = 3600 [pipeline:main] pipeline = egg:WebError#evalerror diff --git a/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl b/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl index cf26cd0ea..11f7c9642 100644 --- a/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl +++ b/pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl @@ -1,5 +1,4 @@ from pyramid_beaker import session_factory_from_settings -from pyramid.personality.pylons import renderer_globals_factory_config def main(global_config, **settings): """ This function returns a Pylons WSGI application. @@ -17,8 +16,6 @@ def main(global_config, **settings): session_factory = session_factory_from_settings(settings) config.set_session_factory(session_factory) # XXX add caching setup - globals_factory = renderer_globals_factory_config(None) - config.set_renderer_globals_factory(globals_factory) config.add_static_view( 'static', '{{package}}:static/' @@ -34,5 +31,7 @@ def main(global_config, **settings): '{{package}}.handlers:MyHandler', action='index' ) + config.add_subscriber('{{package}}.subscribers.add_renderer_globals', + 'pyramid.events.BeforeRender') config.end() return config.make_wsgi_app() diff --git a/pyramid/paster_templates/pylons_sqla/+package+/subscribers.py_tmpl b/pyramid/paster_templates/pylons_sqla/+package+/subscribers.py_tmpl new file mode 100644 index 000000000..168bf55ea --- /dev/null +++ b/pyramid/paster_templates/pylons_sqla/+package+/subscribers.py_tmpl @@ -0,0 +1,26 @@ +from pyramid.threadlocal import get_current_request +from pyramid.exceptions import ConfigurationError +from pyramid.url import route_url + +def add_renderer_globals(event): + """ A subscriber to the ``pyramid.events.BeforeRender`` events. Updates + the :term:`renderer globals` with values that are familiar to Pylons + users.""" + request = event.get('request') + if request is None: + request = get_current_request() + globs = { + 'url': route_url, + 'h':None, + } + if request is not None: + tmpl_context = request.tmpl_context + globs['c'] = tmpl_context + globs['tmpl_context'] = tmpl_context + try: + globs['session'] = request.session + except ConfigurationError: + pass + event.update(globs) + + diff --git a/pyramid/paster_templates/pylons_sqla/development.ini_tmpl b/pyramid/paster_templates/pylons_sqla/development.ini_tmpl index aeaf84e65..82d55950b 100644 --- a/pyramid/paster_templates/pylons_sqla/development.ini_tmpl +++ b/pyramid/paster_templates/pylons_sqla/development.ini_tmpl @@ -13,12 +13,6 @@ session.data_dir = %(here)s/data/sessions/data session.lock_dir = %(here)s/data/sessions/lock session.key = {{project}} session.secret = your_app_secret_string -cache.regions = default_term, second, short_term, long_term -cache.type = memory -cache.second.expire = 1 -cache.short_term.expire = 60 -cache.default_term.expire = 300 -cache.long_term.expire = 3600 [pipeline:main] pipeline = diff --git a/pyramid/personality/__init__.py b/pyramid/personality/__init__.py deleted file mode 100644 index 5bb534f79..000000000 --- a/pyramid/personality/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# package diff --git a/pyramid/personality/pylons.py b/pyramid/personality/pylons.py deleted file mode 100644 index 9ed265169..000000000 --- a/pyramid/personality/pylons.py +++ /dev/null @@ -1,25 +0,0 @@ -from pyramid.threadlocal import get_current_request -from pyramid.url import route_url - -def renderer_globals_factory_config(helpers): - """ Return a :term:`renderer globals` factory useful in applications that - behave like :term:`Pylons` using the ``helpers`` argument passed as a the - ``helpers`` key (should be a Python module).""" - def renderer_globals_factory(system): - req = system['request'] - if req is None: - req = get_current_request() - renderer_globals = { - 'url': route_url, - 'h': helpers, - 'request':req, - } - if req is not None: - tmpl_context = req.tmpl_context - renderer_globals['c'] = tmpl_context - renderer_globals['tmpl_context'] = tmpl_context - if 'session' in req.__dict__: - renderer_globals['session'] = req.session - return renderer_globals - return renderer_globals_factory - diff --git a/pyramid/tests/test_pylons_personality.py b/pyramid/tests/test_pylons_personality.py deleted file mode 100644 index 570fcba5b..000000000 --- a/pyramid/tests/test_pylons_personality.py +++ /dev/null @@ -1,54 +0,0 @@ -import unittest - - -class Test_pylons_renderer_globals_factory_config(unittest.TestCase): - def setUp(self): - from pyramid.configuration import Configurator - self.config = Configurator() - request = DummyRequest() - self.config.begin(request) - - def tearDown(self): - self.config.end() - - def _makeOne(self, helpers): - from pyramid.personality import pylons - return pylons.renderer_globals_factory_config(helpers) - - def test_with_request(self): - request = DummyRequest() - from pyramid.url import route_url - system = {'request':request} - factory = self._makeOne('helpers') - result = factory(system) - self.assertEqual(result['url'], route_url) - self.assertEqual(result['h'], 'helpers') - self.assertEqual(result['c'], request.tmpl_context) - self.assertEqual(result['tmpl_context'], request.tmpl_context) - - def test_without_request(self): - from pyramid.url import route_url - from pyramid.threadlocal import get_current_request - system = {'request':None} - factory = self._makeOne('helpers') - result = factory(system) - self.assertEqual(result['url'], route_url) - self.assertEqual(result['h'], 'helpers') - request = get_current_request() - self.assertEqual(result['c'], request.tmpl_context) - self.assertEqual(result['tmpl_context'], request.tmpl_context) - self.assertEqual(result['request'], request) - - def test_with_session(self): - request = DummyRequest() - request.session = 'session' - system = {'request':request} - factory = self._makeOne('helpers') - result = factory(system) - self.assertEqual(result['session'], 'session') - -class DummyRequest(object): - def __init__(self): - self.tmpl_context = object() - - -- cgit v1.2.3