[Zope-Checkins] SVN: Zope/trunk/src/App/FactoryDispatcher.py optimize access to product packages
Nikolay Kim
fafhrd91 at gmail.com
Wed Jun 15 01:28:31 EDT 2011
Log message for revision 121936:
optimize access to product packages
Changed:
U Zope/trunk/src/App/FactoryDispatcher.py
-=-
Modified: Zope/trunk/src/App/FactoryDispatcher.py
===================================================================
--- Zope/trunk/src/App/FactoryDispatcher.py 2011-06-14 19:51:37 UTC (rev 121935)
+++ Zope/trunk/src/App/FactoryDispatcher.py 2011-06-15 05:28:30 UTC (rev 121936)
@@ -32,16 +32,17 @@
zope2 packages and those without the Products namespace package.
"""
import Products
- packages = {}
+
+ _packages = {}
for x in dir(Products):
m = getattr(Products, x)
if isinstance(m, types.ModuleType):
- packages[x] = m
+ _packages[x] = m
for m in get_registered_packages():
- packages[m.__name__] = m
+ _packages[m.__name__] = m
- return packages
+ return _packages
class Product(Base):
@@ -85,8 +86,15 @@
def __bobo_traverse__(self, REQUEST, name):
# Try to get a custom dispatcher from a Python product
+ global _packages
+ try:
+ package = _packages.get(name, None)
+ except NameError:
+ _packages = _product_packages()
+ package = _packages.get(name, None)
+
dispatcher_class=getattr(
- _product_packages().get(name, None),
+ package,
'__FactoryDispatcher__',
FactoryDispatcher)
@@ -139,7 +147,7 @@
def __getattr__(self, name):
p=self.__dict__['_product']
d=p.__dict__
- if hasattr(p,name) and d.has_key(name):
+ if hasattr(p,name) and name in d:
m=d[name]
w=getattr(m, '_permissionMapper', None)
if w is not None:
@@ -149,7 +157,7 @@
# Waaa
m = 'Products.%s' % p.id
- if sys.modules.has_key(m) and sys.modules[m]._m.has_key(name):
+ if m in sys.modules and sys.modules[m]._m.has_key(name):
return sys.modules[m]._m[name]
raise AttributeError, name
More information about the Zope-Checkins
mailing list