[Zope-Checkins]
SVN: Zope/branches/2.10/lib/python/OFS/Application.py
Extract package installation code into its own function so it
can be reused.
Stefan H. Holek
stefan at epy.co.at
Sat Jun 23 04:40:04 EDT 2007
Log message for revision 76965:
Extract package installation code into its own function so it can be reused.
Changed:
U Zope/branches/2.10/lib/python/OFS/Application.py
-=-
Modified: Zope/branches/2.10/lib/python/OFS/Application.py
===================================================================
--- Zope/branches/2.10/lib/python/OFS/Application.py 2007-06-23 08:13:35 UTC (rev 76964)
+++ Zope/branches/2.10/lib/python/OFS/Application.py 2007-06-23 08:40:00 UTC (rev 76965)
@@ -633,21 +633,9 @@
install_product(app, product_dir, product_name, meta_types,
folder_permissions, raise_exc=debug_mode)
- # Delayed install of products-as-packages
- for module_, init_func in getattr(Products, '_packages_to_initialize', []):
- try:
- product = App.Product.initializeProduct(module_,
- module_.__name__,
- module_.__path__[0],
- app)
-
- product.package_name = module_.__name__
-
- if init_func is not None:
- newContext = ProductContext(product, app, module_)
- init_func(newContext)
- finally:
- transaction.commit()
+ # Delayed install of packages-as-products
+ for module, init_func in Products._packages_to_initialize:
+ install_package(app, module, init_func, raise_exc=debug_mode)
Products._packages_to_initialize = []
Products.meta_types=Products.meta_types+tuple(meta_types)
@@ -878,6 +866,34 @@
if raise_exc:
raise
+
+def install_package(app, module, init_func, raise_exc=False, log_exc=True):
+ """Installs a Python package like a product."""
+ try:
+ product = App.Product.initializeProduct(module,
+ module.__name__,
+ module.__path__[0],
+ app)
+ product.package_name = module.__name__
+ if init_func is not None:
+ newContext = ProductContext(product, app, module)
+ init_func(newContext)
+
+ if not doInstall():
+ transaction.abort()
+ else:
+ transaction.get().note('Installed package %s' % module.__name__)
+ transaction.commit()
+
+ except:
+ if log_exc:
+ LOG.error("Couldn't install %s" % module.__name__,
+ exc_info=True)
+ transaction.abort()
+ if raise_exc:
+ raise
+
+
def install_standards(app):
# Check to see if we've already done this before
# Don't do it twice (Casey)
More information about the Zope-Checkins
mailing list