[Repoze-checkins] r1370 - in repoze.bfg/trunk/repoze/bfg: . tests
Paul Everitt
paul at agendaless.com
Fri Jul 18 10:23:58 EDT 2008
Author: Paul Everitt <paul at agendaless.com>
Date: Fri Jul 18 10:23:58 2008
New Revision: 1370
Log:
Using Chris's help, changed signature of interface to support what the XSLT processors expects. Fixed tests to assert that interface.
Modified:
repoze.bfg/trunk/repoze/bfg/interfaces.py
repoze.bfg/trunk/repoze/bfg/template.py
repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py
Modified: repoze.bfg/trunk/repoze/bfg/interfaces.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/interfaces.py (original)
+++ repoze.bfg/trunk/repoze/bfg/interfaces.py Fri Jul 18 10:23:58 2008
@@ -13,6 +13,12 @@
def __call__(*arg, **kw):
""" Must return an object that implements IResponse; args are
mapped into an IView's __call__ by mapply-like code """
+
+class INodeView(IView):
+ def __call__(node, **kw):
+ """ Must return an object that implements IResponse; node is an
+ lxml.etree Element and **kw provides parameters to an XSLT
+ processor """
class IViewFactory(Interface):
def __call__(context, request):
Modified: repoze.bfg/trunk/repoze/bfg/template.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/template.py (original)
+++ repoze.bfg/trunk/repoze/bfg/template.py Fri Jul 18 10:23:58 2008
@@ -11,6 +11,7 @@
from webob import Response
from repoze.bfg.interfaces import IView
+from repoze.bfg.interfaces import INodeView
from repoze.bfg.interfaces import ITemplateFactory
class Z3CPTTemplateFactory(object):
@@ -28,15 +29,14 @@
class XSLTemplateFactory(object):
classProvides(ITemplateFactory)
- implements(IView)
+ implements(INodeView)
def __init__(self, path):
self.path = path
- def __call__(self, *arg, **kw):
- node = kw.get("node")
+ def __call__(self, node, **kw):
processor = get_processor(self.path)
- result = str(processor(node))
+ result = str(processor(node, **kw))
response = Response(result)
return response
@@ -92,7 +92,7 @@
return template(**kw)
-def render_transform(path, **kw):
+def render_transform(path, node, **kw):
""" Render a XSL template at the package-relative path (may also
be absolute) using the kwargs in ``*kw`` as top-level names and
return a Response object."""
@@ -106,11 +106,10 @@
path = os.path.join(prefix, path)
template = queryUtility(IView, path)
- node = kw.get("node")
if template is None:
if not os.path.exists(path):
raise ValueError('Missing template file: %s' % path)
template = XSLTemplateFactory(path)
registerTemplate(template, path)
- return template(**kw)
+ return template(node, **kw)
Modified: repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py (original)
+++ repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py Fri Jul 18 10:23:58 2008
@@ -34,16 +34,16 @@
klass = self._getTargetClass()
return klass(*arg, **kw)
- def test_instance_conforms_to_IView(self):
+ def test_instance_conforms_to_INodeView(self):
from zope.interface.verify import verifyObject
- from repoze.bfg.interfaces import IView
+ from repoze.bfg.interfaces import INodeView
path = self._getTemplatePath('minimal.xsl')
- verifyObject(IView, self._makeOne(path))
+ verifyObject(INodeView, self._makeOne(path))
- def test_class_conforms_to_IView(self):
+ def test_class_conforms_to_INodeView(self):
from zope.interface.verify import verifyClass
- from repoze.bfg.interfaces import IView
- verifyClass(IView, self._getTargetClass())
+ from repoze.bfg.interfaces import INodeView
+ verifyClass(INodeView, self._getTargetClass())
def test_class_conforms_to_ITemplateFactory(self):
from zope.interface.verify import verifyObject
More information about the Repoze-checkins
mailing list