[Checkins] SVN: grok/trunk/src/grok/ temporarily store resource registration code and tests (_grok.py, ftests/static and ftests/test_grok_functional.py)

Wolfgang Schnerring wosc at wosc.de
Tue Oct 17 11:11:14 EDT 2006


Log message for revision 70751:
  temporarily store resource registration code and tests (_grok.py, ftests/static and ftests/test_grok_functional.py)

Changed:
  U   grok/trunk/src/grok/_grok.py
  A   grok/trunk/src/grok/ftests/static/
  A   grok/trunk/src/grok/ftests/static/__init__.py
  A   grok/trunk/src/grok/ftests/static/simple.py
  A   grok/trunk/src/grok/ftests/static/simple_fixture/
  A   grok/trunk/src/grok/ftests/static/simple_fixture/__init__.py
  A   grok/trunk/src/grok/ftests/static/simple_fixture/static/
  A   grok/trunk/src/grok/ftests/static/simple_fixture/static/file.txt
  U   grok/trunk/src/grok/ftests/test_grok_functional.py

-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py	2006-10-17 15:10:08 UTC (rev 70750)
+++ grok/trunk/src/grok/_grok.py	2006-10-17 15:11:14 UTC (rev 70751)
@@ -27,6 +27,7 @@
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer, IBrowserRequest
 from zope.pagetemplate import pagetemplate
 from zope.app.pagetemplate.engine import TrustedAppPT
+from zope.app.publisher.browser.directoryresource import DirectoryResourceFactory
 
 from grok import util, scan
 from grok.error import GrokError, GrokImportError
@@ -90,7 +91,10 @@
                              provides=IDefaultViewName)
 
     package_or_module = resolve(dotted_name)
-    for name in scan.modules(dotted_name, package_or_module.__file__):
+    for name, path in scan.modules(dotted_name, package_or_module.__file__):
+        if is_package(name):
+            register_static_resources(name, path)
+
         grok_module(name)
 
 def grok_module(dotted_name):
@@ -170,7 +174,17 @@
                                 inline_template)
             templates.register(template_name, template)
 
+def register_static_resources(dotted_name, package_directory):
+    path = os.path.join(package_directory, 'static')
 
+    if os.path.exists(path):
+#         if not os.path.isdir(path):
+#             raise GrokError("")
+
+        resource_factory = DirectoryResourceFactory(path, NoProxy, dotted_name)
+        component.provideAdapter(resource_factory, (IDefaultBrowserLayer,),
+                                 interface.Interface, name=dotted_name)
+
 def register_models(models):
     for model in models:
         # TODO minimal security here (read: everything is public)

Added: grok/trunk/src/grok/ftests/static/__init__.py
===================================================================
--- grok/trunk/src/grok/ftests/static/__init__.py	2006-10-17 15:10:08 UTC (rev 70750)
+++ grok/trunk/src/grok/ftests/static/__init__.py	2006-10-17 15:11:14 UTC (rev 70751)
@@ -0,0 +1 @@
+# this is a package

Added: grok/trunk/src/grok/ftests/static/simple.py
===================================================================
--- grok/trunk/src/grok/ftests/static/simple.py	2006-10-17 15:10:08 UTC (rev 70750)
+++ grok/trunk/src/grok/ftests/static/simple.py	2006-10-17 15:11:14 UTC (rev 70751)
@@ -0,0 +1,21 @@
+"""
+If there is a static/ directory inside of a grokked package, its
+contents will be available as static resources under a URL:
+
+  >>> grok.grok('grok.tests.static.simple_fixture')
+  >>> from zope.testbrowser.testing import Browser
+  >>> browser = Browser()
+  >>> browser.handleErrors = False
+  >>> browser.open('http://localhost/++resource++grok.tests.static.simple_fixture/file.txt')
+  >>> print browser.contents
+  some text
+"""
+import grok
+
+# class Mammoth(grok.Model):
+#     pass
+
+# index = grok.PageTemplate("""\
+# <html>
+# <body>
+# <h1 tal

Added: grok/trunk/src/grok/ftests/static/simple_fixture/__init__.py
===================================================================
--- grok/trunk/src/grok/ftests/static/simple_fixture/__init__.py	2006-10-17 15:10:08 UTC (rev 70750)
+++ grok/trunk/src/grok/ftests/static/simple_fixture/__init__.py	2006-10-17 15:11:14 UTC (rev 70751)
@@ -0,0 +1 @@
+# this is a package

Added: grok/trunk/src/grok/ftests/static/simple_fixture/static/file.txt
===================================================================
--- grok/trunk/src/grok/ftests/static/simple_fixture/static/file.txt	2006-10-17 15:10:08 UTC (rev 70750)
+++ grok/trunk/src/grok/ftests/static/simple_fixture/static/file.txt	2006-10-17 15:11:14 UTC (rev 70751)
@@ -0,0 +1 @@
+some text

Modified: grok/trunk/src/grok/ftests/test_grok_functional.py
===================================================================
--- grok/trunk/src/grok/ftests/test_grok_functional.py	2006-10-17 15:10:08 UTC (rev 70750)
+++ grok/trunk/src/grok/ftests/test_grok_functional.py	2006-10-17 15:11:14 UTC (rev 70751)
@@ -56,7 +56,7 @@
 
 def test_suite():
     suite = unittest.TestSuite()
-    for name in ['view']:
+    for name in ['view', 'static']:
         suite.addTest(suiteFromPackage(name))
     return suite
 



More information about the Checkins mailing list