[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