[Checkins] SVN: grok/branches/gotcha-configuration-actions/src/grok/ different strategy for storing context and templates: don't attach it to module_info,

Philipp von Weitershausen philikon at philikon.de
Wed Oct 10 04:40:26 EDT 2007


Log message for revision 80772:
  different strategy for storing context and templates: don't attach it to module_info,
  make it a module "annotation".
  

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

-=-
Modified: grok/branches/gotcha-configuration-actions/src/grok/_grok.py
===================================================================
--- grok/branches/gotcha-configuration-actions/src/grok/_grok.py	2007-10-10 08:36:08 UTC (rev 80771)
+++ grok/branches/gotcha-configuration-actions/src/grok/_grok.py	2007-10-10 08:40:25 UTC (rev 80772)
@@ -101,9 +101,7 @@
 
 def finalize_grok(name, module, kw):
     module_info = kw['module_info']
-
-    # XXX find a better way to associate arbitrary data with module_info
-    templates = getattr(module_info, 'templates', None)
+    templates = module_info.getAnnotation('grok.templates', None)
     if templates is None:
         return
     unassociated = list(templates.listUnassociated())

Modified: grok/branches/gotcha-configuration-actions/src/grok/meta.py
===================================================================
--- grok/branches/gotcha-configuration-actions/src/grok/meta.py	2007-10-10 08:36:08 UTC (rev 80771)
+++ grok/branches/gotcha-configuration-actions/src/grok/meta.py	2007-10-10 08:40:25 UTC (rev 80772)
@@ -57,7 +57,7 @@
         possible_contexts = martian.scan_for_classes(module, [grok.Model,
                                                               grok.Container])
         context = util.determine_module_context(module_info, possible_contexts)
-        module_info.context = context
+        module.__grok_context__ = context
         return True
 
 
@@ -65,7 +65,7 @@
     component_class = grok.Adapter
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         adapter_context = util.determine_class_context(factory, context)
         provides = util.class_annotation(factory, 'grok.provides', None)
         if provides is None:
@@ -119,7 +119,7 @@
     component_class = grok.XMLRPC
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         view_context = util.determine_class_context(factory, context)
         # XXX We should really not make __FOO__ methods available to
         # the outside -- need to discuss how to restrict such things.
@@ -161,7 +161,7 @@
     component_class = grok.View
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         view_context = util.determine_class_context(factory, context)
 
         factory.module_info = module_info
@@ -182,8 +182,10 @@
         # find templates
         template_name = util.class_annotation(factory, 'grok.template',
                                               factory_name)
-        templates = module_info.templates
-        template = templates.get(template_name)
+        template = None
+        templates = module_info.getAnnotation('grok.templates', None)
+        if templates is not None:
+            template = templates.get(template_name)
 
         if factory_name != template_name:
             # grok.template is being used
@@ -251,7 +253,7 @@
     component_class = grok.JSON
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         view_context = util.determine_class_context(factory, context)
         methods = util.methods_from_class(factory)
 
@@ -292,7 +294,7 @@
     component_class = grok.Traverser
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         factory_context = util.determine_class_context(factory, context)
         component.provideAdapter(factory,
                                  adapts=(factory_context, IBrowserRequest),
@@ -306,7 +308,7 @@
     priority = 1001
 
     def grok(self, name, module, module_info, config, **kw):
-        module_info.templates = templatereg.TemplateRegistry()
+        module.__grok_templates__ = templatereg.TemplateRegistry()
         return True
 
 
@@ -318,7 +320,10 @@
     component_class = grok.PageTemplate
 
     def grok(self, name, instance, module_info, config, **kw):
-        module_info.templates.register(name, instance)
+        templates = module_info.getAnnotation('grok.templates', None)
+        if templates is None:
+            return False
+        templates.register(name, instance)
         instance._annotateGrokInfo(name, module_info.dotted_name)
         return True
 
@@ -334,7 +339,10 @@
     priority = 999
 
     def grok(self, name, module, module_info, config):
-        module_info.templates.findFilesystem(module_info)
+        templates = module_info.getAnnotation('grok.templates', None)
+        if templates is None:
+            return False
+        templates.findFilesystem(module_info)
         return True
 
 
@@ -353,7 +361,7 @@
 class AdapterDecoratorGrokker(martian.GlobalGrokker):
 
     def grok(self, name, module, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         implementers = module_info.getAnnotation('implementers', [])
         for function in implementers:
             interfaces = getattr(function, '__component_adapts__', None)
@@ -611,7 +619,7 @@
     component_class = grok.Annotation
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
+        context = module_info.getAnnotation('grok.context', None)
         adapter_context = util.determine_class_context(factory, context)
         provides = util.class_annotation(factory, 'grok.provides', None)
         if provides is None:
@@ -663,7 +671,6 @@
     component_class = components.IndexesClass
 
     def grok(self, name, factory, module_info, config, **kw):
-        context = module_info.context
         site = util.class_annotation(factory, 'grok.site', None)
         if site is None:
             raise GrokError("No site specified for grok.Indexes "
@@ -673,6 +680,7 @@
         indexes = util.class_annotation(factory, 'grok.indexes', None)
         if indexes is None:
             return False
+        context = module_info.getAnnotation('grok.context', None)
         context = util.determine_class_context(factory, context)
         catalog_name = util.class_annotation(factory, 'grok.name', u'')
         zope.component.provideHandler(



More information about the Checkins mailing list