[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