[Checkins] SVN: grokui.introspector/trunk/src/grokui/introspector/ Create general introspection view which shows all the IInfo views for

Martijn Faassen faassen at infrae.com
Tue Jul 22 13:01:35 EDT 2008


Log message for revision 88716:
  Create general introspection view which shows all the IInfo views for
  arbitrary objects. 
  

Changed:
  U   grokui.introspector/trunk/src/grokui/introspector/code.py
  U   grokui.introspector/trunk/src/grokui/introspector/views.py

-=-
Modified: grokui.introspector/trunk/src/grokui/introspector/code.py
===================================================================
--- grokui.introspector/trunk/src/grokui/introspector/code.py	2008-07-22 16:58:07 UTC (rev 88715)
+++ grokui.introspector/trunk/src/grokui/introspector/code.py	2008-07-22 17:01:35 UTC (rev 88716)
@@ -16,11 +16,6 @@
 import grok
 from zope.introspector.code import Code, PackageOrModule
 
-class Index(grok.View):
-    grok.context(Code)
-    def render(self):
-        return "This is code"
-
 class CodeTraverser(grok.Traverser):
     grok.context(PackageOrModule)
 

Modified: grokui.introspector/trunk/src/grokui/introspector/views.py
===================================================================
--- grokui.introspector/trunk/src/grokui/introspector/views.py	2008-07-22 16:58:07 UTC (rev 88715)
+++ grokui.introspector/trunk/src/grokui/introspector/views.py	2008-07-22 17:01:35 UTC (rev 88716)
@@ -16,8 +16,10 @@
 """
 
 import grok
+from zope import component
 from zope.interface import Interface
 from zope.app.folder.interfaces import IRootFolder
+from zope.introspector.interfaces import IInfos
 
 from grokui.introspector.interfaces import (IGrokRegistryIntrospector,
                                             IGrokCodeIntrospector)
@@ -41,3 +43,20 @@
 class Code(grok.View):
     grok.name('index')
     grok.context(IGrokCodeIntrospector)
+
+class Introspect(grok.View):
+    grok.context(Interface)
+    grok.name('index')
+
+    def infoViews(self):
+        for name, info in IInfos(self.context).infos():
+            view = component.getMultiAdapter((info, self.request),
+                                             name='index')
+            # the introspect view is found for everything, and therefore
+            # also for the IInfo adapter. This is not what we want, just
+            # skip displaying a view for the IInfo if there's no more specific
+            # view to be found
+            if isinstance(view, Introspect):
+                continue
+            yield view
+



More information about the Checkins mailing list