[Checkins] SVN: megrok.genshi/trunk/ Inline template support.
Lennart Regebro
regebro at gmail.com
Fri Oct 5 05:47:24 EDT 2007
Log message for revision 80628:
Inline template support.
Changed:
U megrok.genshi/trunk/buildout.cfg
U megrok.genshi/trunk/src/megrok/genshi/__init__.py
U megrok.genshi/trunk/src/megrok/genshi/components.py
U megrok.genshi/trunk/src/megrok/genshi/ftesting.zcml
U megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py
-=-
Modified: megrok.genshi/trunk/buildout.cfg
===================================================================
--- megrok.genshi/trunk/buildout.cfg 2007-10-05 09:42:48 UTC (rev 80627)
+++ megrok.genshi/trunk/buildout.cfg 2007-10-05 09:47:23 UTC (rev 80628)
@@ -1,6 +1,6 @@
[buildout]
develop = . grok
-parts = app data zopectl test
+parts = app data zopectl test test_grok
find-links = http://download.zope.org/distribution/
newest = false
@@ -54,3 +54,8 @@
recipe = zc.recipe.testrunner
eggs = megrok.genshi
defaults = ['--tests-pattern', '^f?tests$', '-v']
+
+[test_grok]
+recipe = zc.recipe.testrunner
+eggs = grok
+defaults = ['--tests-pattern', '^f?tests$', '-v']
Modified: megrok.genshi/trunk/src/megrok/genshi/__init__.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/__init__.py 2007-10-05 09:42:48 UTC (rev 80627)
+++ megrok.genshi/trunk/src/megrok/genshi/__init__.py 2007-10-05 09:47:23 UTC (rev 80628)
@@ -0,0 +1 @@
+
Modified: megrok.genshi/trunk/src/megrok/genshi/components.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/components.py 2007-10-05 09:42:48 UTC (rev 80627)
+++ megrok.genshi/trunk/src/megrok/genshi/components.py 2007-10-05 09:47:23 UTC (rev 80628)
@@ -16,19 +16,15 @@
import grok.components
import grok.interfaces
import genshi.template
+import grok
+import martian
-class GenshiMarkupTemplateFile(grok.components.GrokPageTemplate):
+class GenshiTemplateBase(object):
- zope.interface.implements(grok.interfaces.ITemplateFile)
-
- def __init__(self, filename, _prefix=None):
- loader = genshi.template.TemplateLoader(_prefix)
- self._template = loader.load(filename)
-
def __call__(self, namespace):
stream = self._template.generate(**namespace)
- return stream.render('xhtml')
-
+ return stream.render(self.result_type)
+
def _factory_init(self, factory):
pass
@@ -40,25 +36,34 @@
namespace.update(view.getTemplateVariables())
return self(namespace)
-class GenshiTextTemplateFile(grok.components.GrokPageTemplate):
+class GenshiMarkupTemplate(GenshiTemplateBase, grok.components.PageTemplate):
+
+ result_type = 'xhtml'
+
+ def __init__(self, html):
+ self._template = genshi.template.MarkupTemplate(html)
+ self.__grok_module__ = martian.util.caller_module()
+
+
+class GenshiMarkupTemplateFile(GenshiTemplateBase, grok.components.GrokPageTemplate):
+
zope.interface.implements(grok.interfaces.ITemplateFile)
+
+ result_type = 'xhtml'
+
+ def __init__(self, filename, _prefix=None):
+ loader = genshi.template.TemplateLoader(_prefix)
+ self._template = loader.load(filename)
+
+
+class GenshiTextTemplateFile(GenshiTemplateBase, grok.components.GrokPageTemplate):
+
+ result_type = 'xhtml'
+ zope.interface.implements(grok.interfaces.ITemplateFile)
+
def __init__(self, filename, _prefix=None):
loader = genshi.template.TemplateLoader(_prefix)
self._template = loader.load(filename, cls=genshi.template.TextTemplate)
- def __call__(self, namespace):
- stream = self._template.generate(**namespace)
- return stream.render('text')
-
- def _factory_init(self, factory):
- pass
-
- def getDefaultVariables(self):
- return {}
-
- def render_template(self, view):
- namespace = view.getDefaultVariables()
- namespace.update(view.getTemplateVariables())
- return self(namespace)
Modified: megrok.genshi/trunk/src/megrok/genshi/ftesting.zcml
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/ftesting.zcml 2007-10-05 09:42:48 UTC (rev 80627)
+++ megrok.genshi/trunk/src/megrok/genshi/ftesting.zcml 2007-10-05 09:47:23 UTC (rev 80628)
@@ -6,6 +6,7 @@
>
<include package="grok" />
+ <grok:grok package=".grokkers" />
<grok:grok package="." />
<!-- Typical functional testing security setup -->
Modified: megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py 2007-10-05 09:42:48 UTC (rev 80627)
+++ megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py 2007-10-05 09:47:23 UTC (rev 80628)
@@ -6,8 +6,8 @@
import zope.component.eventtesting
from zope.publisher.browser import TestRequest
from zope import component
+from megrok.genshi import components
-
class Mammoth(grok.Model):
pass
@@ -31,7 +31,12 @@
game = "MAMMOTH!"
+class Inline(grok.View):
+ pass
+inline = components.GenshiMarkupTemplate("<html><body>ME GROK HAS INLINES!</body></html>")
+
+
class GenshiTemplateTests(unittest.TestCase):
def test_templatedir(self):
@@ -88,6 +93,13 @@
text = view()
self.assertEquals(text, 'ME GROK HUNT MAMMOTH!!')
+ def test_inlinetemplate(self):
+ manfred = Mammoth()
+ request = TestRequest()
+ view = component.getMultiAdapter((manfred, request), name='inline')
+ html = view()
+ self.assert_('ME GROK HAS INLINES!' in html)
+
def test_suite():
from megrok.genshi.tests import FunctionalLayer
More information about the Checkins
mailing list