[Checkins] SVN: grok/branches/ksmith_mcweekly-layers-011/ various fixes based on Martijn's code review

Kevin Smith kevin at mcweekly.com
Wed Sep 19 12:56:28 EDT 2007


Log message for revision 79752:
  various fixes based on Martijn's code review

Changed:
  U   grok/branches/ksmith_mcweekly-layers-011/CREDITS.txt
  U   grok/branches/ksmith_mcweekly-layers-011/src/grok/meta.py

-=-
Modified: grok/branches/ksmith_mcweekly-layers-011/CREDITS.txt
===================================================================
--- grok/branches/ksmith_mcweekly-layers-011/CREDITS.txt	2007-09-19 14:52:01 UTC (rev 79751)
+++ grok/branches/ksmith_mcweekly-layers-011/CREDITS.txt	2007-09-19 16:56:27 UTC (rev 79752)
@@ -27,6 +27,8 @@
 
 * Wim Boucqaert (admin interface layout improvements)
 
+* Kevin M. Smith (skins and layers support)
+
 * ME GROK (team mascot)
 
 Thank you

Modified: grok/branches/ksmith_mcweekly-layers-011/src/grok/meta.py
===================================================================
--- grok/branches/ksmith_mcweekly-layers-011/src/grok/meta.py	2007-09-19 14:52:01 UTC (rev 79751)
+++ grok/branches/ksmith_mcweekly-layers-011/src/grok/meta.py	2007-09-19 16:56:27 UTC (rev 79752)
@@ -193,11 +193,9 @@
                 raise GrokError("View %r has no associated template or "
                                 "'render' method." % factory, factory)
 
-        # grab layer, if there is one
-        view_layer = util.class_annotation(factory, 'grok.layer',
-                                           None) or module_info.getAnnotation('grok.layer',
-                                               None) or IDefaultBrowserLayer
-
+        # grab layer from class or module
+        view_layer = determine_class_directive('grok.layer', factory, module_info, default=IDefaultBrowserLayer)
+        
         view_name = util.class_annotation(factory, 'grok.name',
                                           factory_name)
         # __view_name__ is needed to support IAbsoluteURL on views
@@ -669,9 +667,17 @@
 
     def grok(self, name, factory, context, module_info, templates):
 
-        layer = util.class_annotation(factory, 'grok.layer',
-                                      None) or module_info.getAnnotation('grok.layer',
-                                      None) or IBrowserRequest
+        layer = determine_class_directive('grok.layer', factory, module_info, default=IBrowserRequest)
         name = grok.util.class_annotation(factory, 'grok.name', factory.__name__.lower())
         zope.component.interface.provideInterface(name, layer, IBrowserSkinType)
         return True
+
+
+def determine_class_directive(directive_name, factory, module_info, default=None):
+    directive = util.class_annotation(factory, directive_name, None)
+    if directive is None:
+        directive = module_info.getAnnotation(directive_name, None)
+    if directive is not None:
+        return directive
+    else:
+        return default



More information about the Checkins mailing list