[Checkins] SVN: five.pt/trunk/ Compatibility changes to support Zope 2.10.

Malthe Borch mborch at gmail.com
Thu Nov 20 19:31:14 EST 2008


Log message for revision 93213:
  Compatibility changes to support Zope 2.10.

Changed:
  U   five.pt/trunk/CHANGES.txt
  U   five.pt/trunk/src/five/pt/cmf.py
  U   five.pt/trunk/src/five/pt/configure.zcml
  U   five.pt/trunk/src/five/pt/expressions.py
  U   five.pt/trunk/src/five/pt/patches.py

-=-
Modified: five.pt/trunk/CHANGES.txt
===================================================================
--- five.pt/trunk/CHANGES.txt	2008-11-21 00:20:56 UTC (rev 93212)
+++ five.pt/trunk/CHANGES.txt	2008-11-21 00:31:14 UTC (rev 93213)
@@ -4,6 +4,8 @@
 HEAD
 ----
 
+- Compatibility changes to support Zope 2.10. [malthe]
+
 five.pt 0.1 (released 11/19/2008)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Modified: five.pt/trunk/src/five/pt/cmf.py
===================================================================
--- five.pt/trunk/src/five/pt/cmf.py	2008-11-21 00:20:56 UTC (rev 93212)
+++ five.pt/trunk/src/five/pt/cmf.py	2008-11-21 00:31:14 UTC (rev 93213)
@@ -39,6 +39,10 @@
     def __call__(self, *args, **kwargs):
         kwargs['args'] = args
         return BaseTemplateFile.__call__(self, self, **kwargs)    
+
+    @property
+    def func_code(self):
+        return self.render.func_code    
     
 class FSControllerPageTemplate(FSPageTemplate, FSControllerBase, BaseCPT):
     def __init__(self, id, filepath, fullname=None, properties=None):

Modified: five.pt/trunk/src/five/pt/configure.zcml
===================================================================
--- five.pt/trunk/src/five/pt/configure.zcml	2008-11-21 00:20:56 UTC (rev 93212)
+++ five.pt/trunk/src/five/pt/configure.zcml	2008-11-21 00:31:14 UTC (rev 93213)
@@ -15,4 +15,8 @@
      name="exists"
      component=".expressions.exists_translator" />
 
+  <utility
+     name="provider"
+     component=".expressions.provider_translator" />
+
 </configure>

Modified: five.pt/trunk/src/five/pt/expressions.py
===================================================================
--- five.pt/trunk/src/five/pt/expressions.py	2008-11-21 00:20:56 UTC (rev 93212)
+++ five.pt/trunk/src/five/pt/expressions.py	2008-11-21 00:31:14 UTC (rev 93213)
@@ -1,11 +1,15 @@
 from z3c.pt.expressions import PathTranslator
 from z3c.pt.expressions import ExistsTranslator
 from z3c.pt.expressions import ZopeExistsTraverser
+from z3c.pt.expressions import ProviderTranslator
 
 from zExceptions import NotFound, Unauthorized
 
+from zope import component
 from zope.traversing.adapters import traversePathElement
 from zope.traversing.interfaces import TraversalError
+from zope.contentprovider.interfaces import IContentProvider
+from zope.contentprovider.interfaces import ContentProviderLookupError
 
 from Products.PageTemplates.Expressions import render
 
@@ -48,8 +52,6 @@
 class PathTranslator(PathTranslator):
     path_traverse = FiveTraverser()
 
-path_translator = PathTranslator()
-
 class FiveExistsTraverser(ZopeExistsTraverser):
     exceptions = AttributeError, LookupError, TypeError, \
                  NotFound, Unauthorized, TraversalError
@@ -57,4 +59,24 @@
 class ExistsTranslator(ExistsTranslator):
     path_traverse = FiveExistsTraverser()
 
+class FiveContentProviderTraverser(object):
+    def __call__(self, context, request, view, name):
+        cp = component.queryMultiAdapter(
+            (context, request, view), IContentProvider, name=name)
+
+        # provide a useful error message, if the provider was not found.
+        if cp is None:
+            raise ContentProviderLookupError(name)
+
+        if getattr(cp, '__of__', None) is not None:
+            cp = cp.__of__(context)
+
+        cp.update()
+        return cp.render()
+
+class FiveProviderTranslator(ProviderTranslator):
+    content_provider_traverser = FiveContentProviderTraverser()
+
+path_translator = PathTranslator()
 exists_translator = ExistsTranslator()
+provider_translator = FiveProviderTranslator()

Modified: five.pt/trunk/src/five/pt/patches.py
===================================================================
--- five.pt/trunk/src/five/pt/patches.py	2008-11-21 00:20:56 UTC (rev 93212)
+++ five.pt/trunk/src/five/pt/patches.py	2008-11-21 00:31:14 UTC (rev 93213)
@@ -11,7 +11,20 @@
 from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile as \
      ZopeViewPageTemplateFile
 
-from Products.Five.browser.pagetemplatefile import BoundPageTemplate
+try:
+    from Products.Five.browser.pagetemplatefile import BoundPageTemplate
+except ImportError:
+    from zope.app.pagetemplate.viewpagetemplatefile import BoundPageTemplate
+    import Acquisition
+    
+    class BoundPageTemplate(BoundPageTemplate, Acquisition.Implicit):
+        """Emulate a class implementing Acquisition.interfaces.IAcquirer and
+        IAcquisitionWrapper.
+        """
+
+        __parent__ = property(lambda self: self.im_self)
+        
+
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile as \
      FiveViewPageTemplateFile
      



More information about the Checkins mailing list