[Checkins] SVN: z3c.pt/trunk/ Split out content provider call.
Malthe Borch
mborch at gmail.com
Thu Nov 20 19:34:29 EST 2008
Log message for revision 93214:
Split out content provider call.
Changed:
U z3c.pt/trunk/CHANGES.txt
U z3c.pt/trunk/src/z3c/pt/expressions.py
-=-
Modified: z3c.pt/trunk/CHANGES.txt
===================================================================
--- z3c.pt/trunk/CHANGES.txt 2008-11-21 00:31:14 UTC (rev 93213)
+++ z3c.pt/trunk/CHANGES.txt 2008-11-21 00:34:29 UTC (rev 93214)
@@ -4,6 +4,9 @@
Head
~~~~
+- Split out content provider function call to allow modification
+ through subclassing. [malthe]
+
- Added language negotiation. [malthe]
- Simplified template class inheritance. [malthe]
Modified: z3c.pt/trunk/src/z3c/pt/expressions.py
===================================================================
--- z3c.pt/trunk/src/z3c/pt/expressions.py 2008-11-21 00:31:14 UTC (rev 93213)
+++ z3c.pt/trunk/src/z3c/pt/expressions.py 2008-11-21 00:34:29 UTC (rev 93214)
@@ -17,16 +17,17 @@
def identity(x):
return x
-def get_content_provider(context, request, view, name):
- cp = zope.component.queryMultiAdapter(
- (context, request, view), IContentProvider, name=name)
+class ContentProviderTraverser(object):
+ def __call__(self, context, request, view, name):
+ cp = zope.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)
+ # provide a useful error message, if the provider was not found.
+ if cp is None:
+ raise ContentProviderLookupError(name)
- cp.update()
- return cp.render()
+ cp.update()
+ return cp.render()
class ZopeTraverser(object):
def __init__(self, proxify=identity):
@@ -197,6 +198,7 @@
provider_regex = re.compile(r'^[A-Za-z][A-Za-z0-9_\.-]*$')
symbol = '_get_content_provider'
+ content_provider_traverser = ContentProviderTraverser()
def translate(self, string, escape=None):
if self.provider_regex.match(string) is None:
@@ -205,7 +207,7 @@
value = types.value("%s(context, request, view, '%s')" % \
(self.symbol, string))
- value.symbol_mapping[self.symbol] = get_content_provider
+ value.symbol_mapping[self.symbol] = self.content_provider_traverser
return value
class ExistsTranslator(PathTranslator):
More information about the Checkins
mailing list