[Checkins] SVN: grok/branches/gotcha-configuration-actions/src/grok/ Use the same descriminators that zope.component.zcml uses in its directive handlers.

Philipp von Weitershausen philikon at philikon.de
Tue Oct 9 11:04:14 EDT 2007


Log message for revision 80744:
  Use the same descriminators that zope.component.zcml uses in its directive handlers.
  Don't check whether a permission has been registered until we're executing actions.
  

Changed:
  U   grok/branches/gotcha-configuration-actions/src/grok/meta.py
  U   grok/branches/gotcha-configuration-actions/src/grok/tests/security/multiple_require.py
  U   grok/branches/gotcha-configuration-actions/src/grok/util.py

-=-
Modified: grok/branches/gotcha-configuration-actions/src/grok/meta.py
===================================================================
--- grok/branches/gotcha-configuration-actions/src/grok/meta.py	2007-10-09 14:55:56 UTC (rev 80743)
+++ grok/branches/gotcha-configuration-actions/src/grok/meta.py	2007-10-09 15:04:13 UTC (rev 80744)
@@ -1,4 +1,4 @@
-##############################################################################
+ ##############################################################################
 #
 # Copyright (c) 2006-2007 Zope Corporation and Contributors.
 # All Rights Reserved.
@@ -57,15 +57,11 @@
         if provides is None:
             util.check_implements_one(factory)
         name = util.class_annotation(factory, 'grok.name', '')
+
         config.action( 
-            discriminator=('grokadapter', adapter_context, provides, name),
+            discriminator=('adapter', adapter_context, provides, name),
             callable=component.provideAdapter,
-            args=(factory,),
-            kw=dict(
-                    adapts=(adapter_context,),
-                    provides=provides,
-                    name=name
-                   )
+            args=(factory, (adapter_context,), provides, name),
             )
         return True
 
@@ -79,13 +75,9 @@
         check_adapts(factory)
         name = util.class_annotation(factory, 'grok.name', '')
         config.action(
-            discriminator=('grokmultiadapter', provides, name),
+            discriminator=('adapter', provides, name),
             callable=component.provideAdapter,
-            args=(factory,),
-            kw=dict(
-                    provides=provides,
-                    name=name
-                   )
+            args=(factory, None, provides, name),
             )
         return True
 
@@ -99,13 +91,9 @@
             util.check_implements_one(factory)
         name = util.class_annotation(factory, 'grok.name', '')
         config.action(
-            discriminator=('grokglobalutility', provides, name),
+            discriminator=('utility', provides, name),
             callable=component.provideUtility,
-            args=(factory(),),
-            kw=dict(
-                    provides=provides,
-                    name=name
-                   )
+            args=(factory(), provides, name),
             )
         return True
 
@@ -214,25 +202,19 @@
         factory.__view_name__ = view_name
         adapts = (view_context, view_layer)
         config.action(
-            discriminator=('grokview', adapts, view_name),
-            callable=setupView,
-            args=(factory,),
-            kw=dict(
-                    provides=interface.Interface,
-                    adapts=adapts,
-                    name=view_name
-                   )
+            discriminator=('adapter', adapts, interface.Interface, view_name),
+            callable=component.provideAdapter,
+            args=(factory, adapts, interface.Interface, view_name),
             )
-        
-        return True
 
-def setupView(factory, provides, adapts, name):
-    component.provideAdapter(factory, provides=provides,
-        adapts=adapts, name=name)
-    # protect view, public by default
-    default_permission = get_default_permission(factory)
-    make_checker(factory, factory, default_permission)
+        permission = get_default_permission(factory)
+        config.action(
+            discriminator=('protectName', factory, '__call__'),
+            callable=make_checker,
+            args=(factory, factory, permission),
+            )
 
+        return True
 
 
 class JSONGrokker(martian.ClassGrokker):

Modified: grok/branches/gotcha-configuration-actions/src/grok/tests/security/multiple_require.py
===================================================================
--- grok/branches/gotcha-configuration-actions/src/grok/tests/security/multiple_require.py	2007-10-09 14:55:56 UTC (rev 80743)
+++ grok/branches/gotcha-configuration-actions/src/grok/tests/security/multiple_require.py	2007-10-09 15:04:13 UTC (rev 80744)
@@ -4,8 +4,7 @@
   >>> grok.tests.grok(__name__)
   Traceback (most recent call last):
     ...
-  ConfigurationExecutionError: martian.error.GrokError: grok.require was called multiple times in <class 'grok.tests.security.multiple_require.MultipleView'>. It may only be set once for a class.
-  ...
+  GrokError: grok.require was called multiple times in <class 'grok.tests.security.multiple_require.MultipleView'>. It may only be set once for a class.
 
 """
 import grok

Modified: grok/branches/gotcha-configuration-actions/src/grok/util.py
===================================================================
--- grok/branches/gotcha-configuration-actions/src/grok/util.py	2007-10-09 14:55:56 UTC (rev 80743)
+++ grok/branches/gotcha-configuration-actions/src/grok/util.py	2007-10-09 15:04:13 UTC (rev 80744)
@@ -72,7 +72,6 @@
                         % factory, factory)
 
     result = permissions[0]
-    check_permission(factory, result)
     return result
 
 def url(request, obj, name=None):



More information about the Checkins mailing list