[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