[Checkins] SVN: Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py Let utilityinfo find also local utilities.

Uli Fouquet uli at gnufix.de
Fri Jun 20 08:33:20 EDT 2008


Log message for revision 87597:
  Let utilityinfo find also local utilities.

Changed:
  U   Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py

-=-
Modified: Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py
===================================================================
--- Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py	2008-06-20 12:32:37 UTC (rev 87596)
+++ Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py	2008-06-20 12:33:19 UTC (rev 87597)
@@ -13,6 +13,7 @@
 ##############################################################################
 """Infos about utilities.
 """
+import zope.component
 from zope.component import globalregistry
 
 class UtilityInfo(object):
@@ -21,7 +22,17 @@
         self.context = obj
 
     def getAllUtilities(self):
-        return [
-            dict(name=x.name, provided=x.provided,
-                 registry=x.registry, component=x.component)
-            for x in list(globalregistry.base.registeredUtilities())]
+        smlist = [zope.component.getSiteManager(self.context)]
+        seen = []
+        result = []
+        while smlist:
+            sm = smlist.pop()
+            if sm in seen:
+                continue
+            seen.append(sm)
+            smlist += list(sm.__bases__)
+            for u in sm.registeredUtilities():
+                result.append(
+                    dict(name = u.name, provided=u.provided,
+                         registry=u.registry, component=u.component))
+        return result



More information about the Checkins mailing list