[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