diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-11-19 15:52:01 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-11-19 15:52:01 +0000 |
| commit | a664df6400b3721a40f665d04b751e7a50b42ebc (patch) | |
| tree | 677ffa2a1fda88b0de941359ebcc87d6484fe7cf | |
| parent | 052c9028fdd7bf3951181fad18cb1cc48de77a74 (diff) | |
| download | pyramid-a664df6400b3721a40f665d04b751e7a50b42ebc.tar.gz pyramid-a664df6400b3721a40f665d04b751e7a50b42ebc.tar.bz2 pyramid-a664df6400b3721a40f665d04b751e7a50b42ebc.zip | |
Reword notfound and forbidden view handlers.
| -rw-r--r-- | repoze/bfg/configuration.py | 24 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 30 | ||||
| -rw-r--r-- | repoze/bfg/zcml.py | 45 |
3 files changed, 47 insertions, 52 deletions
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py index 9610006a7..4024484d6 100644 --- a/repoze/bfg/configuration.py +++ b/repoze/bfg/configuration.py @@ -554,27 +554,25 @@ class Configurator(object): name=pkg_name, info=_info) override.insert(path, override_pkg_name, override_prefix) + def forbidden(self, *arg, **kw): + return self.system_view(IForbiddenView, *arg, **kw) - def notfound(self, view=None, attr=None, renderer=None, wrapper=None, - _info=u''): - self.view_utility(view, attr, renderer, wrapper, INotFoundView, - _info=_info) + def notfound(self, *arg, **kw): + return self.system_view(INotFoundView, *arg, **kw) - def forbidden(self, view=None, attr=None, renderer=None, wrapper=None, - _info=u''): - self.view_utility(view, attr, renderer, wrapper, IForbiddenView, - _info=_info) - - def view_utility(self, view, attr, renderer, wrapper, iface, _info=u''): + def system_view(self, iface, view=None, attr=None, renderer=None, + wrapper=None, _info=u''): if not view: if renderer: def view(context, request): return {} else: - raise ConfigurationError('"view" attribute was not specified ' - 'and no renderer specified') + raise ConfigurationError('"view" attribute was not ' + 'specified and no renderer ' + 'specified') - derived_view = self.derive_view(view, attr=attr, renderer_name=renderer, + derived_view = self.derive_view(view, attr=attr, + renderer_name=renderer, wrapper_viewname=wrapper) self.reg.registerUtility(derived_view, iface, '', info=_info) diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index f73fde9a7..ceb156f27 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -137,35 +137,39 @@ class TestForbiddenDirective(unittest.TestCase): self.assertEqual(derived_view(None, None), 'OK') self.assertEqual(derived_view.__name__, view.__name__) -class TestViewUtility(unittest.TestCase): +class TestSystemViewHandler(unittest.TestCase): def setUp(self): testing.setUp() def tearDown(self): testing.tearDown() - def _callFUT(self, context, view, attr, renderer, wrapper, iface): - from repoze.bfg.zcml import view_utility - return view_utility(context, view, attr, renderer, wrapper, iface) + def _makeOne(self, iface): + from repoze.bfg.zcml import SystemViewHandler + return SystemViewHandler(iface) def test_no_view_no_renderer(self): + handler = self._makeOne(IDummy) from zope.configuration.exceptions import ConfigurationError context = DummyContext() - self.assertRaises(ConfigurationError, self._callFUT, context, - None, None, None, None, None) + handler(context) + actions = context.actions + self.assertEqual(len(actions), 1) + regadapt = actions[0] + self.assertEqual(regadapt['discriminator'], IDummy) + register = regadapt['callable'] + self.assertRaises(ConfigurationError, register) def test_no_view_with_renderer(self): from zope.component import getSiteManager - from zope.interface import Interface from repoze.bfg.interfaces import IRendererFactory sm = getSiteManager() def renderer(path): return lambda *arg: 'OK' sm.registerUtility(renderer, IRendererFactory, name='dummy') - class IDummy(Interface): - pass context = DummyContext() - self._callFUT(context, None, None, 'dummy', None, IDummy) + handler = self._makeOne(IDummy) + handler(context, renderer='dummy') actions = context.actions self.assertEqual(len(actions), 1) regadapt = actions[0] @@ -178,16 +182,14 @@ class TestViewUtility(unittest.TestCase): def test_template_renderer(self): from zope.component import getSiteManager - from zope.interface import Interface from repoze.bfg.interfaces import IRendererFactory sm = getSiteManager() def renderer(path): return lambda *arg: 'OK' sm.registerUtility(renderer, IRendererFactory, name='.pt') - class IDummy(Interface): - pass context = DummyContext() - self._callFUT(context, None, None, 'fixtures/minimal.pt', None, IDummy) + handler = self._makeOne(IDummy) + handler(context, renderer='fixtures/minimal.pt') actions = context.actions self.assertEqual(len(actions), 1) regadapt = actions[0] diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index eae53c337..6cbea96df 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -293,7 +293,6 @@ def route(_context, name, path, view=None, view_for=None, view_path_info), ) - class ISystemViewDirective(Interface): view = GlobalObject( title=u"", @@ -316,33 +315,29 @@ class ISystemViewDirective(Interface): description = u'', required=False) -def notfound(_context, view=None, attr=None, renderer=None, wrapper=None): - view_utility(_context, view, attr, renderer, wrapper, INotFoundView) - -def forbidden(_context, view=None, attr=None, renderer=None, wrapper=None): - view_utility(_context, view, attr, renderer, wrapper, IForbiddenView) +class SystemViewHandler(object): + def __init__(self, iface): + self.iface = iface -def view_utility(_context, view, attr, renderer, wrapper, iface): - if not view: - if renderer: - def view(context, request): - return {} - else: - raise ConfigurationError('"view" attribute was not specified and ' - 'no renderer specified') - - if renderer and '.' in renderer: - renderer = resource_spec(renderer, package_name(_context.resolve('.'))) + def __call__(self, _context, view=None, attr=None, renderer=None, + wrapper=None): + if renderer and '.' in renderer: + renderer = resource_spec( + renderer, package_name(_context.resolve('.'))) - def register(): - reg = get_current_registry() - config = Configurator(reg) - config.view_utility(view, attr, renderer, wrapper, iface, _context.info) + def register(iface=self.iface): + reg = get_current_registry() + config = Configurator(reg) + config.system_view(iface, view=view, attr=attr, renderer=renderer, + wrapper=wrapper, _info=_context.info) - _context.action( - discriminator = iface, - callable = register, - ) + _context.action( + discriminator = self.iface, + callable = register, + ) + +notfound = SystemViewHandler(INotFoundView) +forbidden = SystemViewHandler(IForbiddenView) class IResourceDirective(Interface): """ |
