[Checkins] SVN: grok/branches/gotcha-configuration-actions/src/grok/meta.py More using the same discriminators that Zope 3 uses.

Philipp von Weitershausen philikon at philikon.de
Tue Oct 9 11:30:01 EDT 2007


Log message for revision 80745:
  More using the same discriminators that Zope 3 uses.
  

Changed:
  U   grok/branches/gotcha-configuration-actions/src/grok/meta.py

-=-
Modified: grok/branches/gotcha-configuration-actions/src/grok/meta.py
===================================================================
--- grok/branches/gotcha-configuration-actions/src/grok/meta.py	2007-10-09 15:04:13 UTC (rev 80744)
+++ grok/branches/gotcha-configuration-actions/src/grok/meta.py	2007-10-09 15:30:00 UTC (rev 80745)
@@ -1,4 +1,4 @@
- ##############################################################################
+##############################################################################
 #
 # Copyright (c) 2006-2007 Zope Corporation and Contributors.
 # All Rights Reserved.
@@ -22,7 +22,7 @@
                                                IBrowserPublisher,
                                                IBrowserSkinType)
 from zope.publisher.interfaces.xmlrpc import IXMLRPCRequest
-from zope.security.permission import Permission
+from zope.security.interfaces import IPermission
 from zope.app.securitypolicy.role import Role
 from zope.app.securitypolicy.rolepermission import rolePermissionManager
 
@@ -435,12 +435,9 @@
         factory.__grok_utilities_to_install__ = overridden_infos
         adapts = (factory, grok.IObjectAddedEvent)
         config.action( 
-            discriminator=('groksubscriber', adapts),
+            discriminator=None,
             callable=component.provideHandler,
-            args=(localUtilityRegistrationSubscriber,),
-            kw=dict(
-                    adapts=adapts,
-                   )
+            args=(localUtilityRegistrationSubscriber, adapts),
             )
         return True
 
@@ -499,7 +496,7 @@
     site_manager.registerUtility(utility, provided=provides,
                                  name=name)
 
-class DefinePermissionGrokker(martian.ClassGrokker):
+class PermissionGrokker(martian.ClassGrokker):
     component_class = grok.Permission
     priority = 1500
 
@@ -517,19 +514,16 @@
             unicode(util.class_annotation(factory, 'grok.title', id)),
             unicode(util.class_annotation(factory, 'grok.description', '')))
         config.action( 
-            discriminator=('grokpermission', name),
+            discriminator=('utility', IPermission, name),
             callable=component.provideUtility,
-            args=(permission,),
-            kw=dict(
-                    name=id
-                   ),
-            order = self.priority
+            args=(permission, IPermission, id),
+            order=self.priority
             )
         return True
 
-class DefineRoleGrokker(martian.ClassGrokker):
+class RoleGrokker(martian.ClassGrokker):
     component_class = grok.Role
-    priority = DefinePermissionGrokker.priority - 1
+    priority = PermissionGrokker.priority - 1
 
     def grok(self, name, factory, module_info, config, **kw):
         id = util.class_annotation(factory, 'grok.name', None)
@@ -545,21 +539,19 @@
             unicode(util.class_annotation(factory, 'grok.title', id)),
             unicode(util.class_annotation(factory, 'grok.description', '')))
         config.action( 
-            discriminator=('grokpermission', name),
-            callable=setupRole,
-            args=(factory, role),
-            kw=dict(
-                    name=id
-                   ),
-            order = self.priority
+            discriminator=('utility', IRole, name),
+            callable=component.provideUtility,
+            args=(role, IRole, id),
             )
-        return True
 
-def setupRole(factory, role, name):
-        component.provideUtility(role, name=name)
         permissions = util.class_annotation(factory, 'grok.permissions', ())
         for permission in permissions:
-            rolePermissionManager.grantPermissionToRole(permission, id)
+            config.action(
+                discriminator=('grantPermissionToRole', permission, id),
+                callable=rolePermissionManager.grantPermissionToRole,
+                args=(permission, id),
+                )
+        return True
 
 class AnnotationGrokker(martian.ClassGrokker):
     component_class = grok.Annotation



More information about the Checkins mailing list