[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