[Checkins] SVN: grok/branches/jw-philipp-using-ndir-directives/src/grok/ Convert two directives to new-style directives.

Philipp von Weitershausen philikon at philikon.de
Sat May 3 06:02:54 EDT 2008


Log message for revision 86163:
  Convert two directives to new-style directives.

Changed:
  U   grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py
  U   grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py

-=-
Modified: grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py
===================================================================
--- grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py	2008-05-03 09:46:36 UTC (rev 86162)
+++ grok/branches/jw-philipp-using-ndir-directives/src/grok/directive.py	2008-05-03 10:02:54 UTC (rev 86163)
@@ -29,7 +29,7 @@
                                OptionalValueDirective,
                                ClassDirectiveContext,
                                ClassOrModuleDirectiveContext)
-from martian import util
+from martian import util, ndir
 from grok import components
 
 class MultiValueOnceDirective(OnceDirective):
@@ -117,10 +117,20 @@
 require = RequireDirective('grok.require', ClassDirectiveContext())
 site = InterfaceOrClassDirective('grok.site',
                                  ClassDirectiveContext())
-permissions = MultiValueOnceDirective(
-    'grok.permissions', ClassDirectiveContext())
-layer = InterfaceOrClassDirective('grok.layer',
-                           ClassOrModuleDirectiveContext())
+
+class permissions(ndir.Directive):
+    scope = ndir.CLASS
+    store = ndir.ONCE
+    default = []
+
+    def factory(*args):
+        return args
+
+class layer(ndir.Directive):
+    scope = ndir.CLASS_OR_MODULE
+    store = ndir.ONCE
+    validate = ndir.validateInterfaceOrClass
+
 viewletmanager = InterfaceOrClassDirective('grok.viewletmanager',
                                            ClassOrModuleDirectiveContext())
 view = InterfaceOrClassDirective('grok.view',

Modified: grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py
===================================================================
--- grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py	2008-05-03 09:46:36 UTC (rev 86162)
+++ grok/branches/jw-philipp-using-ndir-directives/src/grok/meta.py	2008-05-03 10:02:54 UTC (rev 86163)
@@ -169,9 +169,9 @@
                 )
 
         # grab layer from class or module
-        view_layer = determine_class_directive('grok.layer', factory,
-                                               module_info,
-                                               default=grok.IRESTLayer)
+        view_layer = grok.layer.get(factory, module_info.getModule())
+        if view_layer is None:
+            view_layer = grok.IRESTLayer
 
         for method in methods:
             name = method.__name__
@@ -243,9 +243,9 @@
                                 % (method.__name__, factory), factory)
 
         # grab layer from class or module
-        view_layer = determine_class_directive('grok.layer',
-                                               factory, module_info,
-                                               default=IDefaultBrowserLayer)
+        view_layer = grok.layer.get(factory, module_info.getModule())
+        if view_layer is None:
+            view_layer = IDefaultBrowserLayer
 
         view_name = get_name_classname(factory)
         # __view_name__ is needed to support IAbsoluteURL on views
@@ -634,7 +634,7 @@
             args=(role, IRole, id),
             )
 
-        permissions = util.class_annotation(factory, 'grok.permissions', ())
+        permissions = grok.permissions.get(factory)
         for permission in permissions:
             config.action(
                 discriminator=('grantPermissionToRole', permission, id),
@@ -785,8 +785,10 @@
     component_class = grok.Skin
 
     def grok(self, name, factory, module_info, config, **kw):
-        layer = determine_class_directive('grok.layer', factory, module_info,
-                                          default=IBrowserRequest)
+        view_layer = grok.layer.get(factory, module_info.getModule())
+        if view_layer is None:
+            view_layer = IBrowserRequest
+
         name = get_name_classname(factory)
         config.action(
             discriminator=('skin', name),
@@ -799,8 +801,10 @@
     component_class = grok.RESTProtocol
 
     def grok(self, name, factory, module_info, config, **kw):
-        layer = determine_class_directive('grok.layer', factory, module_info,
-                                          default=IBrowserRequest)
+        layer = grok.layer.get(factory, module_info.getModule())
+        if layer is None:
+            layer = IBrowserRequest
+
         name = get_name_classname(factory)
         config.action(
             discriminator=('restprotocol', name),
@@ -829,10 +833,11 @@
 
         view = determine_class_directive('grok.view', factory,
                                          module_info, default=IBrowserView)
-        viewlet_layer = determine_class_directive('grok.layer', factory,
-                                                  module_info,
-                                                  default=IDefaultBrowserLayer)
 
+        viewlet_layer = grok.layer.get(factory, module_info.getModule())
+        if viewlet_layer is None:
+            viewlet_layer = IDefaultBrowserLayer
+
         config.action(
             discriminator = ('viewletManager', view_context, viewlet_layer,
                              view, name),
@@ -872,9 +877,10 @@
 
         view = determine_class_directive('grok.view', factory,
                                          module_info, default=IBrowserView)
-        viewlet_layer = determine_class_directive('grok.layer', factory,
-                                                  module_info,
-                                                  default=IDefaultBrowserLayer)
+        viewlet_layer = grok.layer.get(factory, module_info.getModule())
+        if viewlet_layer is None:
+            viewlet_layer = IDefaultBrowserLayer
+
         viewletmanager = get_viewletmanager(module_info, factory)
 
         config.action(



More information about the Checkins mailing list