diff options
| author | Chris McDonough <chrism@plope.com> | 2010-11-01 01:02:22 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2010-11-01 01:02:22 -0400 |
| commit | 3a2af35cc39ae4d656ed766cb255342d1abd3641 (patch) | |
| tree | ce760e9bf771240018e6db1a833cd5c2acfc278f | |
| parent | 57e98d5407107321552b34cc780235d008f9f2af (diff) | |
| download | pyramid-3a2af35cc39ae4d656ed766cb255342d1abd3641.tar.gz pyramid-3a2af35cc39ae4d656ed766cb255342d1abd3641.tar.bz2 pyramid-3a2af35cc39ae4d656ed766cb255342d1abd3641.zip | |
imply that a renderer helper implements a well-understood interface (IRendererInfo) that can act as a contract between a renderer factory and the framework
| -rw-r--r-- | TODO.txt | 6 | ||||
| -rw-r--r-- | pyramid/interfaces.py | 10 | ||||
| -rw-r--r-- | pyramid/renderers.py | 4 | ||||
| -rw-r--r-- | pyramid/tests/test_renderers.py | 6 |
4 files changed, 23 insertions, 3 deletions
@@ -66,8 +66,6 @@ - .flash API on session. -- Provide a webob.Response class facade for forward compat. - - CRSF token machinery - ``add_handler`` documentation. @@ -98,6 +96,8 @@ - Remove references to 'WebOb' Response and just call it 'Response', and note that it is imported from pyramid. API docs can mention its inheritance from - webob. + webob (aka "Provide a webob.Response class facade for forward compat"). - Add docs for httpexceptions. + +- RendererHelper -> RendererInfo? diff --git a/pyramid/interfaces.py b/pyramid/interfaces.py index 1c7a8940c..ae322b36c 100644 --- a/pyramid/interfaces.py +++ b/pyramid/interfaces.py @@ -490,3 +490,13 @@ class ISession(Interface): """Return true if a key exists in the mapping.""" NO_PERMISSION_REQUIRED = '__no_permission_required__' + +class IRendererInfo(Interface): + name = Attribute('The value passed by the user as the renderer name') + package = Attribute('The "current package" when the renderer ' + 'configuration statement was found') + type = Attribute('The renderer type name') + registry = Attribute('The "current" application registry when the ' + 'renderer was created') + settings = Attribute('The ISettings dictionary related to the current app') + diff --git a/pyramid/renderers.py b/pyramid/renderers.py index bf5a7e58b..92efc7b0e 100644 --- a/pyramid/renderers.py +++ b/pyramid/renderers.py @@ -4,11 +4,14 @@ import threading from webob import Response +from zope.interface import implements + from pyramid.interfaces import IRendererGlobalsFactory from pyramid.interfaces import IRendererFactory from pyramid.interfaces import IResponseFactory from pyramid.interfaces import ITemplateRenderer from pyramid.interfaces import ISettings +from pyramid.interfaces import IRendererInfo from pyramid.compat import json from pyramid.decorator import reify @@ -211,6 +214,7 @@ def renderer_from_name(path, package=None): # XXX deprecate? return RendererHelper(name=path, package=package).renderer class RendererHelper(object): + implements(IRendererInfo) def __init__(self, name=None, package=None, registry=None): if name and '.' in name: rtype = os.path.splitext(name)[1] diff --git a/pyramid/tests/test_renderers.py b/pyramid/tests/test_renderers.py index 50946fdcd..deaa039a2 100644 --- a/pyramid/tests/test_renderers.py +++ b/pyramid/tests/test_renderers.py @@ -306,6 +306,12 @@ class TestRendererHelper(unittest.TestCase): from pyramid.renderers import RendererHelper return RendererHelper(*arg, **kw) + def test_instance_conforms(self): + from zope.interface.verify import verifyObject + from pyramid.interfaces import IRendererInfo + helper = self._makeOne() + verifyObject(IRendererInfo, helper) + def _registerRendererFactory(self): from pyramid.interfaces import IRendererFactory def renderer(*arg): |
