summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-11-19 15:52:01 +0000
committerChris McDonough <chrism@agendaless.com>2009-11-19 15:52:01 +0000
commita664df6400b3721a40f665d04b751e7a50b42ebc (patch)
tree677ffa2a1fda88b0de941359ebcc87d6484fe7cf
parent052c9028fdd7bf3951181fad18cb1cc48de77a74 (diff)
downloadpyramid-a664df6400b3721a40f665d04b751e7a50b42ebc.tar.gz
pyramid-a664df6400b3721a40f665d04b751e7a50b42ebc.tar.bz2
pyramid-a664df6400b3721a40f665d04b751e7a50b42ebc.zip
Reword notfound and forbidden view handlers.
-rw-r--r--repoze/bfg/configuration.py24
-rw-r--r--repoze/bfg/tests/test_zcml.py30
-rw-r--r--repoze/bfg/zcml.py45
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):
"""