[Checkins] SVN: grok/branches/snowsprint-viewlets/ First simple
test for viewlets added and also the setup stuff so
zope.viewlet and zope.contentprovider is downloaded and zcml loaded.
Tim TerlegÃÂ¥rd
tim.terlegard at valentinewebsystems.se
Tue Jan 22 08:19:50 EST 2008
Log message for revision 83085:
First simple test for viewlets added and also the setup stuff so zope.viewlet and zope.contentprovider is downloaded and zcml loaded.
Changed:
U grok/branches/snowsprint-viewlets/setup.py
U grok/branches/snowsprint-viewlets/src/grok/configure.zcml
U grok/branches/snowsprint-viewlets/src/grok/ftests/test_grok_functional.py
A grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/
A grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/__init__.py
A grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.pt
A grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.py
U grok/branches/snowsprint-viewlets/src/grok/meta.py
U grok/branches/snowsprint-viewlets/src/grok/util.py
U grok/branches/snowsprint-viewlets/versions.cfg
-=-
Modified: grok/branches/snowsprint-viewlets/setup.py
===================================================================
--- grok/branches/snowsprint-viewlets/setup.py 2008-01-22 10:18:13 UTC (rev 83084)
+++ grok/branches/snowsprint-viewlets/setup.py 2008-01-22 13:19:49 UTC (rev 83085)
@@ -77,6 +77,7 @@
'zope.testing',
'zope.traversing',
'zope.testbrowser',
+ 'zope.viewlet',
'zc.catalog',
'z3c.flashmessage',
],
Modified: grok/branches/snowsprint-viewlets/src/grok/configure.zcml
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/configure.zcml 2008-01-22 10:18:13 UTC (rev 83084)
+++ grok/branches/snowsprint-viewlets/src/grok/configure.zcml 2008-01-22 13:19:49 UTC (rev 83085)
@@ -11,6 +11,7 @@
<include package="zope.annotation" />
<include package="zope.copypastemove" />
+ <include package="zope.contentprovider" />
<include package="zope.formlib" />
<include package="zope.i18n.locales" />
<include package="zope.publisher" />
Modified: grok/branches/snowsprint-viewlets/src/grok/ftests/test_grok_functional.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/ftests/test_grok_functional.py 2008-01-22 10:18:13 UTC (rev 83084)
+++ grok/branches/snowsprint-viewlets/src/grok/ftests/test_grok_functional.py 2008-01-22 13:19:49 UTC (rev 83085)
@@ -70,7 +70,8 @@
def test_suite():
suite = unittest.TestSuite()
for name in ['view', 'staticdir', 'xmlrpc', 'traversal', 'form', 'url',
- 'security', 'utility', 'catalog', 'admin', 'site', 'rest']:
+ 'security', 'utility', 'catalog', 'admin', 'site', 'rest',
+ 'viewlet']:
suite.addTest(suiteFromPackage(name))
# this test cannot follow the normal testing pattern, as the
Added: grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/__init__.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/__init__.py (rev 0)
+++ grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/__init__.py 2008-01-22 13:19:49 UTC (rev 83085)
@@ -0,0 +1 @@
+# this is a package
Added: grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.pt
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.pt (rev 0)
+++ grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.pt 2008-01-22 13:19:49 UTC (rev 83085)
@@ -0,0 +1 @@
+<span tal:replace="provider:pot" />
\ No newline at end of file
Added: grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.py (rev 0)
+++ grok/branches/snowsprint-viewlets/src/grok/ftests/viewlet/viewlet.py 2008-01-22 13:19:49 UTC (rev 83085)
@@ -0,0 +1,53 @@
+"""
+
+Test Viewlets
+=============
+
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+ >>> betty = CaveWoman()
+ >>> view = CaveView(betty, request)
+ >>> print view()
+ Brack Bone
+ T-Rex Bone
+ <BLANKLINE>
+"""
+
+
+import grok
+
+
+class CaveWoman(grok.Model):
+ pass
+
+
+class Template(grok.View):
+ pass
+
+
+template = grok.PageTemplateFile('viewlet.pt')
+template.__grok_name__ = 'testtemplate'
+template.__grok_location__ = None
+
+class CaveView(grok.View):
+ template = template
+ def render(self):
+ pass
+
+class Pot(grok.ViewletManager):
+ grok.context(CaveView)
+ grok.name('pot') # default
+
+
+class TRexBone(grok.Viewlet):
+ grok.viewletmanager(Pot)
+
+ def render(self):
+ return "T-Rex Bone"
+
+
+class BrackerBone(grok.Viewlet):
+ grok.viewletmanager(Pot)
+
+ def render(self):
+ return "Brack Bone"
Modified: grok/branches/snowsprint-viewlets/src/grok/meta.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/meta.py 2008-01-22 10:18:13 UTC (rev 83084)
+++ grok/branches/snowsprint-viewlets/src/grok/meta.py 2008-01-22 13:19:49 UTC (rev 83085)
@@ -24,7 +24,6 @@
IBrowserSkinType)
from zope.publisher.interfaces.xmlrpc import IXMLRPCRequest
from zope.viewlet.interfaces import IViewletManager, IViewlet
-from zope.security.checker import NamesChecker, defineChecker
from zope.security.interfaces import IPermission
from zope.securitypolicy.interfaces import IRole
from zope.securitypolicy.rolepermission import rolePermissionManager
@@ -901,6 +900,13 @@
IViewletManager, name)
)
+ permission = get_default_permission(factory)
+ config.action(
+ discriminator=('protectName', factory, '__call__'),
+ callable=make_checker,
+ args=(factory, factory, permission),
+ )
+
return True
class ViewletGrokker(martian.ClassGrokker):
@@ -912,24 +918,6 @@
factory.module_info = module_info # to make /static available
factory_name = factory.__name__.lower()
- permissions = grok.util.class_annotation(factory, 'grok.require', [])
- if not permissions:
- checker = NamesChecker(['update', 'render'])
- elif len(permissions) > 1:
- raise GrokError('grok.require was called multiple times in viewlet '
- '%r. It may only be called once.' % factory,
- factory)
- elif permissions[0] == 'zope.Public':
- checker = NamesChecker(['update','render'])
- else:
- perm = permissions[0]
- if component.queryUtility(IPermission, name=perm) is None:
- raise GrokError('Undefined permission %r in view %r. Use ' 'grok.define_permission first.'
- % (perm, factory), factory)
- checker = NamesChecker(['update','render'], permissions[0])
-
- defineChecker(factory, checker)
-
# find templates
template_name = util.class_annotation(factory, 'grok.template',
factory_name)
@@ -985,4 +973,11 @@
viewletmanager), IViewlet, name)
)
+ permission = get_default_permission(factory)
+ config.action(
+ discriminator=('protectName', factory, '__call__'),
+ callable=make_checker,
+ args=(factory, factory, permission, ['update', 'render']),
+ )
+
return True
Modified: grok/branches/snowsprint-viewlets/src/grok/util.py
===================================================================
--- grok/branches/snowsprint-viewlets/src/grok/util.py 2008-01-22 10:18:13 UTC (rev 83084)
+++ grok/branches/snowsprint-viewlets/src/grok/util.py 2008-01-22 13:19:49 UTC (rev 83085)
@@ -33,18 +33,20 @@
"(use grok.adapts to specify)."
% class_, class_)
-def make_checker(factory, view_factory, permission):
+def make_checker(factory, view_factory, permission, method_names=None):
"""Make a checker for a view_factory associated with factory.
These could be one and the same for normal views, or different
in case we make method-based views such as for JSON and XMLRPC.
"""
+ if method_names is None:
+ method_names = ['__call__']
if permission is not None:
check_permission(factory, permission)
if permission is None or permission == 'zope.Public':
- checker = NamesChecker(['__call__'])
+ checker = NamesChecker(method_names)
else:
- checker = NamesChecker(['__call__'], permission)
+ checker = NamesChecker(method_names, permission)
defineChecker(view_factory, checker)
def check_permission(factory, permission):
Modified: grok/branches/snowsprint-viewlets/versions.cfg
===================================================================
--- grok/branches/snowsprint-viewlets/versions.cfg 2008-01-22 10:18:13 UTC (rev 83084)
+++ grok/branches/snowsprint-viewlets/versions.cfg 2008-01-22 13:19:49 UTC (rev 83085)
@@ -62,6 +62,7 @@
zope.cachedescriptors = 3.4.0
zope.component = 3.4.0
zope.configuration = 3.4.0
+zope.contentprovider = 3.4.0
zope.contenttype = 3.4.0
zope.copypastemove = 3.4.0
zope.datetime = 3.4.0
@@ -98,3 +99,4 @@
zope.testing = 3.5.1
zope.thread = 3.4
zope.traversing = 3.5.0a1.dev-r78730
+zope.viewlet = 3.4.1
More information about the Checkins
mailing list