[Checkins] SVN: grokui.introspector/trunk/src/grokui/introspector/introspector.py Add an introspector traverser and make introspectors locatable.

Uli Fouquet uli at gnufix.de
Tue Jul 8 09:45:07 EDT 2008


Log message for revision 88109:
  Add an introspector traverser and make introspectors locatable.

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

-=-
Modified: grokui.introspector/trunk/src/grokui/introspector/introspector.py
===================================================================
--- grokui.introspector/trunk/src/grokui/introspector/introspector.py	2008-07-08 12:36:37 UTC (rev 88108)
+++ grokui.introspector/trunk/src/grokui/introspector/introspector.py	2008-07-08 13:45:06 UTC (rev 88109)
@@ -15,14 +15,27 @@
 """
 import grok
 from zope.introspector import UtilityInfo
+from zope.location.interfaces import ILocation
+from zope.traversing.interfaces import ITraversable
+from grok.interfaces import IContext
 from grokui.introspector.interfaces import (IGrokIntrospector,
                                             IGrokRegistryIntrospector,
                                             IGrokCodeIntrospector,
                                             IGrokZODBBrowser)
 
-class Introspector(grok.Model):
-    grok.implements(IGrokIntrospector)
+class Introspector(object):
+    grok.implements(IGrokIntrospector, ILocation, IContext)
 
+    def __init__(self, parent, name):
+        self.__parent__ = parent
+        self.__name__ = name
+
+def get_introspector():
+    return Introspector
+grok.global_utility(get_introspector, provides=IGrokIntrospector)
+
+class IntrospectorTraverser(grok.Traverser):
+    grok.context(IGrokIntrospector)
     def traverse(self, path, *args, **kw):
         if path == 'registries':
             return RegistryIntrospector()
@@ -30,7 +43,7 @@
             return CodeIntrospector()
         if path == 'zodb':
             return ZODBBrowser()
-        return self
+        return self.context
 
 class RegistryIntrospector(grok.Model):
     grok.implements(IGrokRegistryIntrospector)
@@ -38,7 +51,6 @@
     def getUtilities(self):
         uinfo = UtilityInfo()
         return uinfo.getAllUtilities()
-        
 
 class CodeIntrospector(grok.Model):
     grok.implements(IGrokCodeIntrospector)



More information about the Checkins mailing list