[Checkins] SVN: grok/trunk/src/grok/ load templates from the
filesystem
Wolfgang Schnerring
wosc at wosc.de
Mon Oct 16 08:44:19 EDT 2006
Log message for revision 70686:
load templates from the filesystem
Changed:
U grok/trunk/src/grok/_grok.py
A grok/trunk/src/grok/tests/view/resourcetemplate/
A grok/trunk/src/grok/tests/view/resourcetemplate/cavepainting.pt
A grok/trunk/src/grok/tests/view/resourcetemplate/food.pt
A grok/trunk/src/grok/tests/view/resourcetemplate.py
-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py 2006-10-16 12:23:57 UTC (rev 70685)
+++ grok/trunk/src/grok/_grok.py 2006-10-16 12:44:18 UTC (rev 70686)
@@ -16,6 +16,8 @@
import types
import sys
import re
+import os
+from pkg_resources import resource_listdir, resource_exists, resource_string
from zope.dottedname.resolve import resolve
from zope import component
from zope import interface
@@ -90,6 +92,18 @@
elif isinstance(obj, PageTemplate):
templates.register(name, obj)
+ # find filesystem resources
+ directory_name = dotted_name.split('.')[-1]
+ if resource_exists(dotted_name, directory_name):
+ resources = resource_listdir(dotted_name, directory_name)
+ for resource in resources:
+ if not resource.endswith(".pt"):
+ continue
+
+ contents = resource_string(dotted_name, os.path.join(directory_name, resource))
+ template = PageTemplate(contents)
+ templates.register(resource[:-3], template)
+
if getattr(module, '__grok_context__', None):
context = module.__grok_context__
Added: grok/trunk/src/grok/tests/view/resourcetemplate/cavepainting.pt
===================================================================
--- grok/trunk/src/grok/tests/view/resourcetemplate/cavepainting.pt 2006-10-16 12:23:57 UTC (rev 70685)
+++ grok/trunk/src/grok/tests/view/resourcetemplate/cavepainting.pt 2006-10-16 12:44:18 UTC (rev 70686)
@@ -0,0 +1,5 @@
+<html>
+<body>
+A cave painting.
+</body>
+</html>
Added: grok/trunk/src/grok/tests/view/resourcetemplate/food.pt
===================================================================
--- grok/trunk/src/grok/tests/view/resourcetemplate/food.pt 2006-10-16 12:23:57 UTC (rev 70685)
+++ grok/trunk/src/grok/tests/view/resourcetemplate/food.pt 2006-10-16 12:44:18 UTC (rev 70686)
@@ -0,0 +1,5 @@
+<html>
+<body>
+ME GROK EAT MAMMOTH!
+</body>
+</html>
Added: grok/trunk/src/grok/tests/view/resourcetemplate.py
===================================================================
--- grok/trunk/src/grok/tests/view/resourcetemplate.py 2006-10-16 12:23:57 UTC (rev 70685)
+++ grok/trunk/src/grok/tests/view/resourcetemplate.py 2006-10-16 12:44:18 UTC (rev 70686)
@@ -0,0 +1,33 @@
+"""
+Templates can also be found in a directory with the same name as the module:
+
+ >>> grok.grok(__name__)
+
+ >>> manfred = Mammoth()
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+ >>> from zope import component
+ >>> view = component.getMultiAdapter((manfred, request), name='cavepainting')
+ >>> print view()
+ <html>
+ <body>
+ A cave painting.
+ </body>
+ </html>
+
+ >>> view = component.getMultiAdapter((manfred, request), name='food')
+ >>> print view()
+ <html>
+ <body>
+ ME GROK EAT MAMMOTH!
+ </body>
+ </html>
+
+"""
+import grok
+
+class Mammoth(grok.Model):
+ pass
+
+class CavePainting(grok.View):
+ pass
More information about the Checkins
mailing list