[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