From deb0dc316b64d5fb7bd0e15a1bafe269d3b33fbc Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 7 Nov 2008 10:47:28 +0000 Subject: Features - Added a ``repoze.bfg.testing`` module to attempt to make it slightly easier to write unittest-based automated tests of BFG applications. Information about this class is in the documentation. - The default template renderer now supports testing better by looking for ``ITestingTemplateRenderer`` using a relative pathname. This is exposed indirectly through the API named ``registerTemplate`` in ``repoze.bfg.testing``. Deprecations - The names ``repoze.bfg.interfaces.ITemplate`` , ``repoze.bfg.interfaces.ITemplateFactory`` and ``repoze.bfg.interfaces.INodeTemplate`` have been deprecated. These should now be imported as ``repoze.bfg.interfaces.ITemplateRenderer`` and ``repoze.bfg.interfaces.ITemplateRendererFactory``, and ``INodeTemplateRenderer`` respectively. - The name ``repoze.bfg.chameleon_zpt.ZPTTemplateFactory`` is deprecated. Use ``repoze.bfg.chameleon_zpt.ZPTTemplateRenderer``. - The name ``repoze.bfg.chameleon_genshi.GenshiTemplateFactory`` is deprecated. Use ``repoze.bfg.chameleon_genshi.GenshiTemplateRenderer``. - The name ``repoze.bfg.xslt.XSLTemplateFactory`` is deprecated. Use ``repoze.bfg.xslt.XSLTemplateRenderer``. --- repoze/bfg/xslt.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'repoze/bfg/xslt.py') diff --git a/repoze/bfg/xslt.py b/repoze/bfg/xslt.py index 949bde6da..660a18130 100644 --- a/repoze/bfg/xslt.py +++ b/repoze/bfg/xslt.py @@ -5,14 +5,15 @@ from webob import Response from zope.component import queryUtility from zope.component import getSiteManager from zope.component.interfaces import ComponentLookupError +from zope.deprecation import deprecated from zope.interface import classProvides from zope.interface import implements from repoze.bfg.path import caller_path -from repoze.bfg.interfaces import INodeTemplate -from repoze.bfg.interfaces import ITemplateFactory +from repoze.bfg.interfaces import INodeTemplateRenderer +from repoze.bfg.interfaces import ITemplateRendererFactory def get_transform(path, node): """ Return a callable transform object. When called, the @@ -23,18 +24,18 @@ def get_transform(path, node): # Render using XSLT path = caller_path(path) - template = queryUtility(INodeTemplate, path) - if template is None: + renderer = queryUtility(INodeTemplateRenderer, path) + if renderer is None: if not os.path.exists(path): raise ValueError('Missing template file: %s' % path) - template = XSLTemplateFactory(path) + renderer = XSLTemplateRenderer(path) try: sm = getSiteManager() except ComponentLookupError: pass else: - sm.registerUtility(template, INodeTemplate, name=path) - return template + sm.registerUtility(renderer, INodeTemplateRenderer, name=path) + return renderer def render_transform(path, node, **kw): """ Render a XSL template at the package-relative path (may also @@ -52,9 +53,9 @@ def render_transform_to_response(path, node, **kw): result = render_transform(path, node, **kw) return Response(result) -class XSLTemplateFactory(object): - classProvides(ITemplateFactory) - implements(INodeTemplate) +class XSLTemplateRenderer(object): + classProvides(ITemplateRendererFactory) + implements(INodeTemplateRenderer) def __init__(self, path, auto_reload=False): self.path = path @@ -65,6 +66,12 @@ class XSLTemplateFactory(object): result = str(processor(node, **kw)) return result +XSLTemplateFactory = XSLTemplateRenderer +deprecated('ZPTTemplateFactory', + ('repoze.bfg.xslt.XSLTemplateFactory should now be ' + 'imported as repoze.bfg.xslt.XSLTTemplateRenderer')) + + # Manage XSLT processors on a per-thread basis import threading from lxml import etree -- cgit v1.2.3