[Checkins] SVN: five.pt/trunk/ API update.

Malthe Borch mborch at gmail.com
Sat Nov 15 09:13:35 EST 2008


Log message for revision 92968:
  API update.

Changed:
  U   five.pt/trunk/CHANGES.txt
  U   five.pt/trunk/src/five/pt/pagetemplate.py
  U   five.pt/trunk/src/five/pt/tests/locals.pt
  U   five.pt/trunk/src/five/pt/tests/test_pagetemplatefile.py

-=-
Modified: five.pt/trunk/CHANGES.txt
===================================================================
--- five.pt/trunk/CHANGES.txt	2008-11-15 14:09:59 UTC (rev 92967)
+++ five.pt/trunk/CHANGES.txt	2008-11-15 14:13:34 UTC (rev 92968)
@@ -1,8 +1,9 @@
 Changelog
 =========
 
-0.1
----
+HEAD
+----
 
-- Package structure.
-  [hannosch]
+- Updated to latest API. [malthe]
+
+- Package structure. [hannosch]

Modified: five.pt/trunk/src/five/pt/pagetemplate.py
===================================================================
--- five.pt/trunk/src/five/pt/pagetemplate.py	2008-11-15 14:09:59 UTC (rev 92967)
+++ five.pt/trunk/src/five/pt/pagetemplate.py	2008-11-15 14:13:34 UTC (rev 92968)
@@ -5,35 +5,28 @@
 
 from Acquisition import aq_get
 from Acquisition import aq_inner
-from Globals import package_home
 
 from Products.PageTemplates.Expressions import SecureModuleImporter
 
-from z3c.pt.pagetemplate import PageTemplate, PageTemplateFile
+from z3c.pt import pagetemplate
 
-
-class ViewPageTemplate(property):
-    def __init__(self, body, **kwargs):
-        self.template = PageTemplate(body, **kwargs)
-        property.__init__(self, self.render)
-
-
-    def render(self, view, default_namespace=None):
+class ViewPageTemplate(pagetemplate.ViewPageTemplate):
+    def bind(self, view, request=None, macro=None, global_scope=True):
         context = aq_inner(view.context)
         request = view.request
+        
+        # locate physical root
+        method = aq_get(context, 'getPhysicalRoot', None)
+        if method is not None:
+            root = method()
+        else:
+            root = None
 
-        # get the root
-        root = None
-        meth = aq_get(context, 'getPhysicalRoot', None)
-        if meth is not None:
-            root = meth()
-
-        def template(*args, **kwargs):
-            namespace = dict(
+        def render(**kwargs):
+            parameters = dict(
                 view=view,
                 context=context,
                 request=request,
-                _context=request,
                 template=self,
                 here=context,
                 container=context,
@@ -42,29 +35,15 @@
                 modules=SecureModuleImporter,
                 views=ViewMapper(context, request),
                 options=kwargs)
-            if default_namespace:
-                namespace.update(default_namespace)
-            return self.template.render(**namespace)
 
-        return template
+            if macro is None:
+                return self.template.render(**parameters)
+            else:
+                return self.template.render_macro(
+                    macro, global_scope=global_scope, parameters=parameters)
+            
+        return render
 
-    def __call__(self, *args, **kwargs):
-        return self.render(*args, **kwargs)
-
-
-class ViewPageTemplateFile(ViewPageTemplate):
-
-    def __init__(self, filename, _prefix=None, **kwargs):
-        path = self.get_path_from_prefix(_prefix)
-        filename = os.path.join(path, filename)
-        self.template = PageTemplateFile(filename)
-        property.__init__(self, self.render)
-
-    def get_path_from_prefix(self, _prefix):
-        if isinstance(_prefix, str):
-            path = _prefix
-        else:
-            if _prefix is None:
-                _prefix = sys._getframe(2).f_globals
-            path = package_home(_prefix)
-        return path
+class ViewPageTemplateFile(ViewPageTemplate, pagetemplate.ViewPageTemplateFile):
+    """If ``filename`` is a relative path, the module path of the
+    class where the instance is used to get an absolute path."""

Modified: five.pt/trunk/src/five/pt/tests/locals.pt
===================================================================
--- five.pt/trunk/src/five/pt/tests/locals.pt	2008-11-15 14:09:59 UTC (rev 92967)
+++ five.pt/trunk/src/five/pt/tests/locals.pt	2008-11-15 14:13:34 UTC (rev 92968)
@@ -1,11 +1,10 @@
 <div xmlns="http://www.w3.org/1999/xhtml"
      xmlns:tal="http://xml.zope.org/namespaces/tal">
-    <div tal:replace="string:view:${view.available()}" />
+    <div tal:replace="string:view:${view/available}" />
     <div tal:replace="python:'here==context:'+str(here==context)" />
     <div tal:replace="python:'here==container:'+str(here==container)" />
-    <div tal:replace="string:root:${root.getPhysicalPath()}" />
+    <div tal:replace="string:root:${root/getPhysicalPath}" />
     <div tal:replace="string:nothing:${nothing}" />
-
     <div tal:define="cgi python:modules['cgi']">
         modules:<span tal:replace="python:cgi.escape(view.tagsoup())" />
     </div>

Modified: five.pt/trunk/src/five/pt/tests/test_pagetemplatefile.py
===================================================================
--- five.pt/trunk/src/five/pt/tests/test_pagetemplatefile.py	2008-11-15 14:09:59 UTC (rev 92967)
+++ five.pt/trunk/src/five/pt/tests/test_pagetemplatefile.py	2008-11-15 14:13:34 UTC (rev 92968)
@@ -5,14 +5,10 @@
 
 from five.pt.pagetemplate import ViewPageTemplateFile
 
-
 class SimpleView(BrowserView):
-
     index = ViewPageTemplateFile('simple.pt')
 
-
 class LocalsView(BrowserView):
-
     def available(self):
         return 'yes'
 
@@ -21,14 +17,10 @@
 
     index = ViewPageTemplateFile('locals.pt')
 
-
 class OptionsView(BrowserView):
-
     index = ViewPageTemplateFile('options.pt')
 
-
 class TestPageTemplateFile(ZopeTestCase):
-
     def afterSetUp(self):
         from Products.Five import zcml
         import Products.Five



More information about the Checkins mailing list