[Checkins] SVN: grok/trunk/src/grok/ make grok also grok packages

Wolfgang Schnerring wosc at wosc.de
Tue Oct 17 06:45:37 EDT 2006


Log message for revision 70738:
  make grok also grok packages

Changed:
  U   grok/trunk/src/grok/_grok.py
  A   grok/trunk/src/grok/tests/scan/package.py

-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py	2006-10-17 10:40:40 UTC (rev 70737)
+++ grok/trunk/src/grok/_grok.py	2006-10-17 10:45:36 UTC (rev 70738)
@@ -27,7 +27,7 @@
 from zope.pagetemplate import pagetemplate
 from zope.app.pagetemplate.engine import TrustedAppPT
 
-from grok import util
+from grok import util, scan
 from grok.error import GrokError, GrokImportError
 from grok.directive import (ClassDirectiveContext, ModuleDirectiveContext,
                             ClassOrModuleDirectiveContext,
@@ -82,6 +82,7 @@
 
 
 AMBIGUOUS_CONTEXT = object()
+
 def grok(dotted_name):
     # register the name 'index' as the default view name
     # TODO this needs to be moved to grok startup time (similar to ZCML-time)
@@ -89,7 +90,11 @@
                              adapts=(Model, IBrowserRequest),
                              provides=IDefaultViewName)
 
-    # TODO for now we only grok modules
+    package_or_module = resolve(dotted_name)
+    for name in scan.modules(dotted_name, package_or_module.__file__):
+        grok_module(name)
+
+def grok_module(dotted_name):
     module = resolve(dotted_name)
 
     context = None

Added: grok/trunk/src/grok/tests/scan/package.py
===================================================================
--- grok/trunk/src/grok/tests/scan/package.py	2006-10-17 10:40:40 UTC (rev 70737)
+++ grok/trunk/src/grok/tests/scan/package.py	2006-10-17 10:45:36 UTC (rev 70738)
@@ -0,0 +1,29 @@
+"""
+  >>> import grok
+  >>> grok.grok('grok.tests.scan.stoneage')
+
+  >>> from grok.tests.scan.stoneage.cave import Cave
+  >>> from grok.tests.scan.stoneage.hunt.mammoth import Mammoth
+  >>> manfred = Mammoth()
+  >>> cave = Cave()
+  
+  >>> from zope.publisher.browser import TestRequest
+  >>> request = TestRequest()
+  >>> from zope import component
+
+  >>> view = component.getMultiAdapter((cave, request), name='index')
+  >>> print view()
+  <html>
+  <body>
+  <h1>A comfy cave</h1>
+  </body>
+  </html>
+  
+  >>> view = component.getMultiAdapter((manfred, request), name='index')
+  >>> print view()
+  <html>
+  <body>
+  <h1>ME GROK HUNT MAMMOTH!</h1>
+  </body>
+  </html>
+"""



More information about the Checkins mailing list