[Checkins] SVN: z3c.pt/trunk/ View templates now support argument-passing for alternative context and request.
Malthe Borch
mborch at gmail.com
Sun Dec 14 13:17:07 EST 2008
Log message for revision 94062:
View templates now support argument-passing for alternative context and request.
Changed:
U z3c.pt/trunk/CHANGES.txt
U z3c.pt/trunk/src/z3c/pt/README.txt
U z3c.pt/trunk/src/z3c/pt/pagetemplate.py
-=-
Modified: z3c.pt/trunk/CHANGES.txt
===================================================================
--- z3c.pt/trunk/CHANGES.txt 2008-12-14 18:16:31 UTC (rev 94061)
+++ z3c.pt/trunk/CHANGES.txt 2008-12-14 18:17:06 UTC (rev 94062)
@@ -1,9 +1,12 @@
Changelog
---------
-Head
-~~~~
+In next release
+- View templates now support argument-passing for alternative context
+ and request (for compatibility with
+ ``zope.app.pagetemplate``). [malthe]
+
- Switched off the $-interpolation feature per default; It may be activated
on a per-template basis using ``meta:interpolation='true'``. [seletz]
Modified: z3c.pt/trunk/src/z3c/pt/README.txt
===================================================================
--- z3c.pt/trunk/src/z3c/pt/README.txt 2008-12-14 18:16:31 UTC (rev 94061)
+++ z3c.pt/trunk/src/z3c/pt/README.txt 2008-12-14 18:17:06 UTC (rev 94062)
@@ -103,6 +103,17 @@
<span>test</span>
</div>
+For compatibility reasons, view templates may be called with an
+alternative context and request.
+
+ >>> print template(view, u"alt_context", "alt_request", test=u'test')
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <span>view</span>
+ <span>alt_context</span>
+ <span>alt_request</span>
+ <span>test</span>
+ </div>
+
Dollar-Interpolation
--------------------
Modified: z3c.pt/trunk/src/z3c/pt/pagetemplate.py
===================================================================
--- z3c.pt/trunk/src/z3c/pt/pagetemplate.py 2008-12-14 18:16:31 UTC (rev 94061)
+++ z3c.pt/trunk/src/z3c/pt/pagetemplate.py 2008-12-14 18:17:06 UTC (rev 94062)
@@ -1,15 +1,14 @@
import os
import sys
-import chameleon.zpt.template
+from zope import i18n
+from chameleon.zpt import template
-import z3c.pt.language
+import language
-from zope import i18n
+class BaseTemplate(template.PageTemplate):
+ default_parser = language.Parser()
-class BaseTemplate(chameleon.zpt.template.PageTemplate):
- default_parser = z3c.pt.language.Parser()
-
def bind(self, ob, request=None, macro=None, global_scope=True):
def render(target_language=None, **kwargs):
context = self._pt_get_context(ob, request, kwargs)
@@ -20,9 +19,9 @@
request or context.get('request'))
except:
target_language = None
-
+
context['target_language'] = target_language
-
+
if macro is None:
return self.render(**context)
else:
@@ -42,7 +41,7 @@
template=self,
nothing=None)
-class BaseTemplateFile(BaseTemplate, chameleon.zpt.template.PageTemplateFile):
+class BaseTemplateFile(BaseTemplate, template.PageTemplateFile):
"""If ``filename`` is a relative path, the module path of the
class where the instance is used to get an absolute path."""
@@ -58,7 +57,7 @@
if package_name != self.__module__:
break
- module = sys.modules[package_name]
+ module = sys.modules[package_name]
try:
path = module.__path__[0]
except AttributeError:
@@ -67,7 +66,7 @@
filename = path + os.sep + filename
- chameleon.zpt.template.PageTemplateFile.__init__(
+ template.PageTemplateFile.__init__(
self, filename, **kwargs)
class PageTemplate(BaseTemplate):
@@ -100,12 +99,18 @@
def _pt_get_context(self, view, request, kwargs):
return dict(
view=view,
- context=view.context,
- request=request or view.request,
+ context=kwargs.get('context', view.context),
+ request=request or kwargs.get('request', view.request),
template=self,
options=kwargs,
nothing=None)
+ def __call__(self, _ob=None, context=None, request=None, **kwargs):
+ kwargs.setdefault('context', context)
+ kwargs.setdefault('request', request)
+ return super(ViewPageTemplate, self).__call__(
+ _ob=_ob, **kwargs)
+
class ViewPageTemplateFile(ViewPageTemplate, PageTemplateFile):
"""If ``filename`` is a relative path, the module path of the
class where the instance is used to get an absolute path."""
More information about the Checkins
mailing list