Log message for revision 67868: ProductDispatcher's __bobo_traverse__ now checks all products registered in Control_Panel.Products rather than simply checking the python Products namespace package.
Changed: U Zope/trunk/lib/python/App/Extensions.py -=- Modified: Zope/trunk/lib/python/App/Extensions.py =================================================================== --- Zope/trunk/lib/python/App/Extensions.py 2006-05-02 20:44:47 UTC (rev 67867) +++ Zope/trunk/lib/python/App/Extensions.py 2006-05-02 20:57:53 UTC (rev 67868) @@ -78,6 +78,7 @@ if d: raise ValueError, ( 'The file name, %s, should be a simple file name' % name) + result = None if checkProduct: l = name.find('.') if l > 0: @@ -85,15 +86,39 @@ n = name[l + 1:] for product_dir in Products.__path__: r = _getPath(product_dir, os.path.join(p, prefix), n, suffixes) - if r is not None: return r + if r is not None: result = r - import App.config - cfg = App.config.getConfiguration() - sw=os.path.dirname(os.path.dirname(cfg.softwarehome)) - for home in (cfg.instancehome, sw): - r=_getPath(home, prefix, name, suffixes) - if r is not None: return r + if result is None: + import App.config + cfg = App.config.getConfiguration() + sw=os.path.dirname(os.path.dirname(cfg.softwarehome)) + for home in (cfg.instancehome, sw): + r=_getPath(home, prefix, name, suffixes) + if r is not None: result = r + if result is None: + try: + l = name.find('.') + if l > 0: + realName = name[l + 1:] + toplevel = name[:l] + + m = __import__(toplevel) + + d = os.path.join(m.__path__[0], prefix, realName) + + for s in suffixes: + if s: s="%s.%s" % (d, s) + else: s=d + if os.path.exists(s): + result = s + break + except: + pass + + + return result + def getObject(module, name, reload=0, # The use of a mutable default is intentional here, # because modules is a module cache. _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins