[Checkins] SVN: Sandbox/ulif/megrok.chameleon/src/megrok/chameleon/components.py Add support for chameleon-genshi templates. Remove garbage.
Uli Fouquet
uli at gnufix.de
Sun Feb 22 07:02:50 EST 2009
Log message for revision 97014:
Add support for chameleon-genshi templates. Remove garbage.
Changed:
U Sandbox/ulif/megrok.chameleon/src/megrok/chameleon/components.py
-=-
Modified: Sandbox/ulif/megrok.chameleon/src/megrok/chameleon/components.py
===================================================================
--- Sandbox/ulif/megrok.chameleon/src/megrok/chameleon/components.py 2009-02-22 12:01:20 UTC (rev 97013)
+++ Sandbox/ulif/megrok.chameleon/src/megrok/chameleon/components.py 2009-02-22 12:02:49 UTC (rev 97014)
@@ -14,10 +14,16 @@
"""Chameleon page template components"""
import os
from chameleon.zpt.template import PageTemplateFile, PageTemplate
+from chameleon.genshi.template import (GenshiTemplateFile, GenshiTemplate,
+ GenshiTextTemplateFile,
+ GenshiTextTemplate)
from grokcore.component import GlobalUtility, implements, name
from grokcore.view import interfaces
from grokcore.view.components import GrokTemplate
+#
+# Chameleon Zope Page Templates...
+#
class ChameleonPageTemplate(GrokTemplate):
filename = None
@@ -26,25 +32,75 @@
self._template = PageTemplate(string)
def setFromFilename(self, filename, _prefix=None):
- print "SETFROMFILE"
self._filename = filename
self._prefix = _prefix
- self._template = PageTemplate(
- open(os.path.join(_prefix, filename), 'rb').read())
+ self._template = PageTemplateFile(os.path.join(_prefix, filename))
return
def render(self, view):
- print "RENDER: ", view, dir(self)
- if self._filename is not None:
- self.setFromFilename(self._filename, self._prefix)
return self._template(**self.getNamespace(view))
class ChameleonPageTemplateFactory(GlobalUtility):
- implements(grokcore.view.interfaces.ITemplateFileFactory)
+ implements(interfaces.ITemplateFileFactory)
name('cpt')
def __call__(self, filename, _prefix=None):
- print "CALL: ", filename, _prefix
+ #print "CALL: ", filename, _prefix
return ChameleonPageTemplate(filename=filename, _prefix=_prefix)
+#
+# Chameleon Genshi Templates
+#
+class ChameleonGenshiTemplate(GrokTemplate):
+ filename = None
+ _format = None
+ def setFromString(self, string):
+ self._filename = None
+ self._template = GenshiTemplate(string, format=self._format)
+
+ def setFromFilename(self, filename, _prefix=None):
+ self._filename = filename
+ self._prefix = _prefix
+ self._template = GenshiTemplateFile(
+ os.path.join(_prefix, filename), format=self._format)
+ return
+
+ def render(self, view):
+ if self._filename is not None:
+ self.setFromFilename(self._filename, self._prefix)
+ return self._template(**self.getNamespace(view))
+
+class ChameleonGenshiTemplateFactory(GlobalUtility):
+ implements(interfaces.ITemplateFileFactory)
+ name('cg')
+
+ def __call__(self, filename, _prefix=None):
+ return ChameleonGenshiTemplate(filename=filename, _prefix=_prefix)
+
+
+class ChameleonGenshiTextTemplate(GrokTemplate):
+ filename = None
+
+ def setFromString(self, string):
+ self._filename = None
+ self._template = GenshiTextTemplate(string)
+
+ def setFromFilename(self, filename, _prefix=None):
+ self._filename = filename
+ self._prefix = _prefix
+ self._template = GenshiTextTemplateFile(
+ os.path.join(_prefix, filename))
+ return
+
+ def render(self, view):
+ if self._filename is not None:
+ self.setFromFilename(self._filename, self._prefix)
+ return self._template(**self.getNamespace(view))
+
+class ChameleonGenshiTextTemplateFactory(GlobalUtility):
+ implements(interfaces.ITemplateFileFactory)
+ name('cgt')
+
+ def __call__(self, filename, _prefix=None):
+ return ChameleonGenshiTextTemplate(filename=filename, _prefix=_prefix)
More information about the Checkins
mailing list