[Checkins] SVN: five.megrok.layout/trunk/ Add extension code and tests.

Sylvain Viollon sylvain at infrae.com
Tue Sep 15 09:08:51 EDT 2009


Log message for revision 104066:
  Add extension code and tests.
  
  

Changed:
  U   five.megrok.layout/trunk/buildout.cfg
  U   five.megrok.layout/trunk/setup.py
  U   five.megrok.layout/trunk/src/five/megrok/layout/__init__.py
  U   five.megrok.layout/trunk/src/five/megrok/layout/components.py
  U   five.megrok.layout/trunk/src/five/megrok/layout/ftesting.zcml
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/__init__.py
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/__init__.py
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/layout.py
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page.py
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/master.pt
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/mybigview.pt
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/resources.py
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/static/
  A   five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/static/empty.js
  U   five.megrok.layout/trunk/src/five/megrok/layout/ftests/test_grok_functional.py
  U   five.megrok.layout/trunk/src/five/megrok/layout/testing.py

-=-
Modified: five.megrok.layout/trunk/buildout.cfg
===================================================================
--- five.megrok.layout/trunk/buildout.cfg	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/buildout.cfg	2009-09-15 13:08:50 UTC (rev 104066)
@@ -28,6 +28,12 @@
 [zope2]
 recipe = plone.recipe.zope2install
 url = http://www.zope.org/Products/Zope/2.10.9/Zope-2.10.9-final.tgz
+fake-zope-eggs = true
+skip-fake-eggs =
+    zope.component
+    zope.interface
+    zope.proxy
+    zope.i18n
 
 [instance]
 recipe = plone.recipe.zope2instance
@@ -53,4 +59,4 @@
 recipe = zc.recipe.testrunner
 eggs = ${instance:eggs}
 extra-paths = ${zope2:location}/lib/python
-defaults = ['-m', 'five.grok', '--tests-pattern', '^f?tests$', '-v']
+defaults = ['-m', 'five.megrok.layout', '--tests-pattern', '^f?tests$', '-v']

Modified: five.megrok.layout/trunk/setup.py
===================================================================
--- five.megrok.layout/trunk/setup.py	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/setup.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -29,6 +29,7 @@
       install_requires=[
           'setuptools',
           'five.grok',
-          'megrok.layout >= 0.6',
+          'grokcore.view >= 1.9',
+          'megrok.layout >= 0.7',
       ],
       )

Modified: five.megrok.layout/trunk/src/five/megrok/layout/__init__.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/__init__.py	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/src/five/megrok/layout/__init__.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -14,4 +14,4 @@
 
 from megrok.layout import *
 
-from five.megrok.layout.components import Layout, Page
+from five.megrok.layout.components import Layout, Page, CodePage

Modified: five.megrok.layout/trunk/src/five/megrok/layout/components.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/components.py	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/src/five/megrok/layout/components.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -20,7 +20,7 @@
 class Layout(megrok.layout.Layout, Acquisition.Explicit):
 
     def __init__(self, *args):
-        super(View, self).__init__(*args)
+        super(Layout, self).__init__(*args)
         if not (self.static is None):
             # static should be wrapper correctly with acquisition,
             # otherwise you will not be able to compute URL for
@@ -32,11 +32,10 @@
     getPhysicalPath = Acquisition.Acquired
 
 
-class Page(megrok.layout.Layout, Acquisition.Explicit):
+class Page(megrok.layout.Page, Acquisition.Explicit):
 
-
     def __init__(self, *args):
-        super(View, self).__init__(*args)
+        super(Page, self).__init__(*args)
         if not (self.static is None):
             # static should be wrapper correctly with acquisition,
             # otherwise you will not be able to compute URL for
@@ -46,3 +45,9 @@
     # We let getPhysicalPath to be acquired. This make static URL's
     # work, and prevent us to inherit from Acquisition.Implicit
     getPhysicalPath = Acquisition.Acquired
+
+
+class CodePage(megrok.layout.CodePage, Acquisition.Explicit):
+    pass
+
+

Modified: five.megrok.layout/trunk/src/five/megrok/layout/ftesting.zcml
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftesting.zcml	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftesting.zcml	2009-09-15 13:08:50 UTC (rev 104066)
@@ -2,15 +2,9 @@
     xmlns="http://namespaces.zope.org/zope"
     xmlns:grok="http://namespaces.zope.org/grok">
 
-  <!-- This file acts kinda like a virtual "site.zcml" during ftesting.
-   five.grok's zcml needs to be included. /-->
-  <include package="five.grok" file="meta.zcml" />
-  <include package="five.grok" />
+  <include package="five.megrok.layout" />
 
   <!-- And also grok all the ftests /-->
-  <grok:grok package="five.grok.ftests" />
+  <grok:grok package="five.megrok.layout.ftests" />
 
-  <include package="zope.app.basicskin" />
-  <include package="zope.app.rotterdam" />
-
 </configure>

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/__init__.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/__init__.py	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/__init__.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1 @@
+# This is a package

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/__init__.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/__init__.py	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/__init__.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1 @@
+#this is a package

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/layout.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/layout.py	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/layout.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1,51 @@
+"""
+  >>> from five.megrok.layout import ILayout
+  >>> from five.megrok.layout.ftests.layout.layout import *
+  >>> from zope.component import getMultiAdapter
+  >>> from zope.publisher.browser import TestRequest
+
+  >>> request = TestRequest()
+  >>> mammoth = Mammoth()
+  >>> mylayout = getMultiAdapter((request, mammoth), ILayout)
+  >>> ILayout.providedBy(mylayout)
+  True
+
+  >>> mylayout.context
+  <five.megrok.layout.ftests.layout.layout.Mammoth object at ...>
+
+  >>> mylayout.render()
+  '<div> MyLayout </div>'
+
+  >>> elephant = Elephant()
+  >>> mycontextlayout = getMultiAdapter((request, elephant), ILayout)
+  >>> mycontextlayout.render()
+  '<div> MyContextLayout </div>'
+"""
+
+from five import grok
+
+from zope import interface
+from five.megrok.layout import Layout
+
+
+class Mammoth(grok.Context):
+    pass
+
+
+class Elephant(grok.Context):
+    pass
+
+
+class MyLayout(Layout):
+    grok.context(interface.Interface)
+
+    def render(self):
+	return "<div> MyLayout </div>"
+
+
+class MyContextLayout(Layout):
+    grok.context(Elephant)
+
+    def render(self):
+	return "<div> MyContextLayout </div>"
+

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page.py	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1,82 @@
+"""
+  >>> from five.megrok.layout import ILayout
+  >>> from five.megrok.layout.ftests.layout.page import *
+  >>> from zope.component import getMultiAdapter
+  >>> from zope.publisher.browser import TestRequest
+
+  >>> request = TestRequest()
+  >>> cow = Cow()
+
+  The next line is for Zope 2. Don't fear it.
+  >>> cow.REQUEST = request
+
+  >>> mylayout = getMultiAdapter((request, cow), ILayout)
+  >>> myview = getMultiAdapter((cow, request), name='myview')
+
+  >>> print myview()
+  <html>
+   <body>
+     <div class="layout"><p> My nice Content </p></div>
+   </body>
+  </html>
+
+  >>> myview
+  <five.megrok.layout.ftests.layout.page.MyView object at ...>
+  >>> myview.layout
+  <five.megrok.layout.ftests.layout.page.Master object at ...>
+  >>> print myview.content()
+  <p> My nice Content </p>
+
+  >>> bigcow = BigCow()
+
+  The next line is for Zope 2. Don't fear it.
+  >>> bigcow.REQUEST = request
+
+  >>> mybigview = getMultiAdapter((bigcow, request), name='myview')
+
+  >>> print mybigview()
+  <html>
+   <body>
+     <div class="layout"><p> My big cool Content </p>
+  </div>
+   </body>
+  </html>
+
+  >>> mybigview
+  <five.megrok.layout.ftests.layout.page.MyBigView object at ...>
+  >>> mybigview.layout
+  <five.megrok.layout.ftests.layout.page.Master object at ...>
+  >>> print mybigview.content()
+  <p> My big cool Content </p>
+
+"""
+from five import grok
+
+from zope import interface
+from five.megrok.layout import Layout, Page, CodePage
+
+
+class Cow(grok.Context):
+    pass
+
+
+class BigCow(Cow):
+    pass
+
+
+class Master(Layout):
+    grok.name('master')
+    grok.context(Cow)
+
+
+class MyView(CodePage):
+    grok.context(interface.Interface)
+
+    def render(self):
+	return "<p> My nice Content </p>"
+
+
+class MyBigView(Page):
+    grok.name('myview')
+    grok.context(BigCow)
+

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/master.pt
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/master.pt	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/master.pt	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1,5 @@
+<html>
+  <body>
+    <div class="layout"><tal:page tal:content="structure view/content" /></div>
+  </body>
+</html>

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/mybigview.pt
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/mybigview.pt	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/page_templates/mybigview.pt	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1 @@
+<p> My big cool Content </p>

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/resources.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/resources.py	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/resources.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1,27 @@
+"""
+  >>> from five.megrok.layout import ILayout
+  >>> from five.megrok.layout.ftests.layout.resources import *
+  >>> from zope.component import getMultiAdapter
+  >>> from zope.publisher.browser import TestRequest
+
+  >>> request = TestRequest()
+  >>> mongo = Dummy()
+  >>> mylayout = getMultiAdapter((request, mongo), ILayout)
+  >>> mylayout.static
+  <five.grok.components.ZopeTwoDirectoryResource object at ...>
+  >>> mylayout.static['empty.js']
+  <Products.Five.browser.resource.FileResource object at ...>
+"""
+
+from five import grok
+from five.megrok.layout import Layout
+
+
+class Dummy(grok.Context):
+    pass
+
+
+class LayoutWithResources(Layout):
+
+    def render(self):
+        return ""

Added: five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/static/empty.js
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/static/empty.js	                        (rev 0)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/layout/static/empty.js	2009-09-15 13:08:50 UTC (rev 104066)
@@ -0,0 +1 @@
+/* Empty */

Modified: five.megrok.layout/trunk/src/five/megrok/layout/ftests/test_grok_functional.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/ftests/test_grok_functional.py	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/src/five/megrok/layout/ftests/test_grok_functional.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -3,7 +3,7 @@
 from pkg_resources import resource_listdir
 from zope.testing import doctest
 from zope.app.testing.functional import HTTPCaller
-from five.grok.testing import GrokFunctionalLayer
+from five.megrok.layout.testing import GrokFunctionalLayer
 from Testing.ZopeTestCase.zopedoctest.functional import getRootFolder, sync
 from Testing.ZopeTestCase import FunctionalDocTestSuite
 
@@ -44,7 +44,7 @@
             # annoying.
             continue
 
-        dottedname = 'five.grok.ftests.%s.%s' % (name, filename[:-3])
+        dottedname = 'five.megrok.layout.ftests.%s.%s' % (name, filename[:-3])
         test = FunctionalDocTestSuite(
             dottedname,
             extraglobs=dict(http=HTTPCaller(),
@@ -62,7 +62,7 @@
 
 def test_suite():
     suite = unittest.TestSuite()
-    for name in ['directoryresource', 'view', 'viewlet','form', 'site']:
+    for name in ['layout', ]:
         suite.addTest(suiteFromPackage(name))
     return suite
 

Modified: five.megrok.layout/trunk/src/five/megrok/layout/testing.py
===================================================================
--- five.megrok.layout/trunk/src/five/megrok/layout/testing.py	2009-09-15 13:07:01 UTC (rev 104065)
+++ five.megrok.layout/trunk/src/five/megrok/layout/testing.py	2009-09-15 13:08:50 UTC (rev 104066)
@@ -29,6 +29,7 @@
     # zcml.do_grok('grokcore.view.templatereg', config)
     zcml.do_grok('five.grok.templatereg', config)
     zcml.do_grok('five.grok.meta', config)
+    zcml.do_grok('megrok.layout.meta', config)
     zcml.do_grok(module_name, config)
     config.execute_actions()
 
@@ -62,7 +63,7 @@
 
     When zope.deprecation is fixed, this warn function can be removed again.
     """
-    print "From five.grok.testing's warn():"
+    print "From five.megrok.layout.testing's warn():"
 
     frame = sys._getframe(stacklevel)
     path = frame.f_globals['__file__']
@@ -97,14 +98,14 @@
     import Products.Five.fiveconfigure as fc
     fc.debug_mode = mode
 
-import five.grok
+import five.megrok.layout
 def safe_load_site():
     '''Loads entire component architecture (w/ debug mode on).'''
     cleanUp()
     setDebugMode(1)
     import Products.Five.zcml as zcml
     zcml.load_site()
-    zcml.load_config('ftesting.zcml', five.grok)
+    zcml.load_config('ftesting.zcml', five.megrok.layout)
     setDebugMode(0)
 
 class Layer:



More information about the checkins mailing list