diff options
| -rw-r--r-- | CHANGES.txt | 12 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/authorization/tutorial/configure.zcml | 14 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/basiclayout/tutorial/configure.zcml | 2 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/models/tutorial/configure.zcml | 2 | ||||
| -rw-r--r-- | docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml | 6 | ||||
| -rw-r--r-- | repoze/bfg/paster_templates/routesalchemy/+package+/configure.zcml | 2 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 311 | ||||
| -rw-r--r-- | repoze/bfg/zcml.py | 8 |
8 files changed, 342 insertions, 15 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 72f6c5d6b..5af979c28 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -9,6 +9,18 @@ Bug Fixes of this bug: applications generated using the ``bfg_zodb`` paster template in 1.1a9 did not work properly. +- Reinstate ``renderer`` alias for ``view_renderer`` in the + ``<route>`` ZCML directive (in-the-wild 1.1a bw compat). + +- ``bfg_routesalchemy`` paster template: change ``<route>`` + declarations: rename ``renderer`` attribute to ``view_renderer``. + +Documentation +------------- + +- In ``<route>`` declarations in tutorial ZCML, rename ``renderer`` + attribute to ``view_renderer`` (fwd compat). + Internal -------- diff --git a/docs/tutorials/bfgwiki2/src/authorization/tutorial/configure.zcml b/docs/tutorials/bfgwiki2/src/authorization/tutorial/configure.zcml index d9f6ffabd..12dbd7ae1 100644 --- a/docs/tutorials/bfgwiki2/src/authorization/tutorial/configure.zcml +++ b/docs/tutorials/bfgwiki2/src/authorization/tutorial/configure.zcml @@ -15,7 +15,7 @@ path="login" name="login" view=".login.login" - renderer="templates/login.pt" + view_renderer="templates/login.pt" /> <route @@ -34,28 +34,28 @@ path=":pagename" name="view_page" view=".views.view_page" - renderer="templates/view.pt" + view_renderer="templates/view.pt" /> <route path="add_page/:pagename" name="add_page" view=".views.add_page" - renderer="templates/edit.pt" - permission="edit" + view_renderer="templates/edit.pt" + view_permission="edit" /> <route path=":pagename/edit_page" name="edit_page" view=".views.edit_page" - renderer="templates/edit.pt" - permission="edit" + view_renderer="templates/edit.pt" + view_permission="edit" /> <forbidden view=".login.login" - renderer="templates/login.pt"/> + view_renderer="templates/login.pt"/> <authtktauthenticationpolicy secret="sosecret" diff --git a/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/configure.zcml b/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/configure.zcml index 75e12c9c8..f0e5ecc20 100644 --- a/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/configure.zcml +++ b/docs/tutorials/bfgwiki2/src/basiclayout/tutorial/configure.zcml @@ -9,7 +9,7 @@ <route path="" name="home" view=".views.my_view" - renderer="templates/mytemplate.pt" + view_renderer="templates/mytemplate.pt" /> <static diff --git a/docs/tutorials/bfgwiki2/src/models/tutorial/configure.zcml b/docs/tutorials/bfgwiki2/src/models/tutorial/configure.zcml index 75e12c9c8..f0e5ecc20 100644 --- a/docs/tutorials/bfgwiki2/src/models/tutorial/configure.zcml +++ b/docs/tutorials/bfgwiki2/src/models/tutorial/configure.zcml @@ -9,7 +9,7 @@ <route path="" name="home" view=".views.my_view" - renderer="templates/mytemplate.pt" + view_renderer="templates/mytemplate.pt" /> <static diff --git a/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml b/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml index 7eafe7c3c..218172a1c 100644 --- a/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml +++ b/docs/tutorials/bfgwiki2/src/views/tutorial/configure.zcml @@ -21,21 +21,21 @@ path=":pagename" name="view_page" view=".views.view_page" - renderer="templates/view.pt" + view_renderer="templates/view.pt" /> <route path="add_page/:pagename" name="add_page" view=".views.add_page" - renderer="templates/edit.pt" + view_renderer="templates/edit.pt" /> <route path=":pagename/edit_page" name="edit_page" view=".views.edit_page" - renderer="templates/edit.pt" + view_renderer="templates/edit.pt" /> </configure> diff --git a/repoze/bfg/paster_templates/routesalchemy/+package+/configure.zcml b/repoze/bfg/paster_templates/routesalchemy/+package+/configure.zcml index f80f2ad75..954be6bf8 100644 --- a/repoze/bfg/paster_templates/routesalchemy/+package+/configure.zcml +++ b/repoze/bfg/paster_templates/routesalchemy/+package+/configure.zcml @@ -10,7 +10,7 @@ path="" name="home" view=".views.my_view" - renderer="templates/mytemplate.pt" + view_renderer="templates/mytemplate.pt" /> <static diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index d534559f6..804fc7b6e 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -1669,6 +1669,43 @@ class TestRouteDirective(unittest.TestCase): predicates = route_args[3] self.assertEqual(len(predicates), 0) + def test_with_view_and_view_for_alias(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + + context = DummyContext() + def view(context, request): + return '123' + self._callFUT(context, 'name', 'path', view=view, for_=IDummy) + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + sm = getSiteManager() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', IDummy, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + request = DummyRequest() + self.assertEqual(wrapped(None, request), '123') + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None,None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + def test_without_view(self): from repoze.bfg.zcml import connect_route context = DummyContext() @@ -1722,6 +1759,43 @@ class TestRouteDirective(unittest.TestCase): predicates = route_args[3] self.assertEqual(len(predicates), 0) + def test_with_view_request_type_alias(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + request_type="GET") + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + sm = getSiteManager() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', None, '', request_type, IView, None, None, 'GET', + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None,None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + def test_with_view_request_method(self): from zope.component import getSiteManager from repoze.bfg.zcml import connect_route @@ -1941,6 +2015,243 @@ class TestRouteDirective(unittest.TestCase): predicates = route_args[3] self.assertEqual(len(predicates), 0) + def test_with_view_renderer(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + from repoze.bfg.interfaces import IRendererFactory + + sm = getSiteManager() + def renderer(name): + return lambda *x: 'foo' + sm.registerUtility(renderer, IRendererFactory, name='dummy') + + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + view_renderer="dummy") + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + sm = getSiteManager() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', None, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None, None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + + def test_with_view_renderer_alias(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + from repoze.bfg.interfaces import IRendererFactory + + sm = getSiteManager() + def renderer(name): + return lambda *x: 'foo' + sm.registerUtility(renderer, IRendererFactory, name='dummy') + + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + renderer="dummy") + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', None, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None, None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + + def test_with_view_permission(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + + sm = getSiteManager() + + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + view_permission="edit") + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + sm = getSiteManager() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', None, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None, None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + + def test_with_view_permission_alias(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + + sm = getSiteManager() + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + permission="edit") + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', None, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None, None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + + def test_with_view_for(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + + sm = getSiteManager() + + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + view_for=IDummy) + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + sm = getSiteManager() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', IDummy, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None, None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + + def test_with_view_for_alias(self): + from zope.component import getSiteManager + from repoze.bfg.zcml import connect_route + from repoze.bfg.interfaces import IView + from repoze.bfg.interfaces import IRouteRequest + + sm = getSiteManager() + context = DummyContext() + def view(context, request): + """ """ + self._callFUT(context, 'name', 'path', view=view, + for_=IDummy) + actions = context.actions + self.assertEqual(len(actions), 2) + + view_action = actions[0] + register = view_action['callable'] + register() + request_type = sm.getUtility(IRouteRequest, 'name') + view_discriminator = view_action['discriminator'] + discrim = ('view', IDummy, '', request_type, IView, None, None, None, + 'name', None, False, None, None, None) + self.assertEqual(view_discriminator, discrim) + wrapped = sm.adapters.lookup((IDummy, request_type), IView, name='') + self.failUnless(wrapped) + + route_action = actions[1] + route_callable = route_action['callable'] + route_discriminator = route_action['discriminator'] + route_args = route_action['args'] + self.assertEqual(route_callable, connect_route) + self.assertEqual(route_discriminator, + ('route', 'name', False, None, None, None, None, None)) + self.assertEqual(route_args[:3], ('path', 'name', None)) + predicates = route_args[3] + self.assertEqual(len(predicates), 0) + def test_with_request_type_GET(self): from zope.component import getSiteManager from repoze.bfg.zcml import connect_route diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index 3d8826eab..2bec8b77a 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -566,12 +566,15 @@ class IRouteDirective(Interface): # alias for view_request_type request_type = TextLine(title=u'request_type', required=False) + view_renderer = TextLine(title=u'view_renderer', required=False) + # alias for view_renderer + renderer = TextLine(title=u'renderer', required=False) + view_request_method = TextLine(title=u'view_request_method', required=False) view_containment = GlobalObject( title = u'Dotted name of a containment class or interface', required=False) view_attr = TextLine(title=u'view_attr', required=False) - view_renderer = TextLine(title=u'view_renderer', required=False) view_header = TextLine(title=u'view_header', required=False) view_accept = TextLine(title=u'view_accept', required=False) view_xhr = Bool(title=u'view_xhr', required=False) @@ -597,7 +600,7 @@ def route(_context, name, path, view=None, view_for=None, view_permission=None, view_request_type=None, view_request_method=None, view_request_param=None, view_containment=None, view_attr=None, - view_renderer=None, view_header=None, + renderer=None, view_renderer=None, view_header=None, view_accept=None, view_xhr=False, view_path_info=None): """ Handle ``route`` ZCML directives @@ -629,6 +632,7 @@ def route(_context, name, path, view=None, view_for=None, view_for = view_for or for_ view_request_type = view_request_type or request_type view_permission = view_permission or permission + view_renderer = view_renderer or renderer _view( _context, permission=view_permission, |
