Commit 152645d3 authored by Jim Fulton's avatar Jim Fulton

Add a global id registry if used with ZODB3.

Add an exception handler for initializing products so that a bad
product can't keep the site from coming up.
parent bc27da30
......@@ -85,8 +85,8 @@
__doc__='''Application support
$Id: Application.py,v 1.108 1999/05/24 21:03:08 jim Exp $'''
__version__='$Revision: 1.108 $'[11:-2]
$Id: Application.py,v 1.109 1999/06/24 19:26:52 jim Exp $'''
__version__='$Revision: 1.109 $'[11:-2]
import Globals,Folder,os,regex,sys,App.Product, App.ProductRegistry, misc_
......@@ -344,10 +344,17 @@ def initialize(app):
get_transaction().note('Added Owner role')
get_transaction().commit()
# Make sure we have Globals
try: root=app._p_jar.root()
except: pass # BoboPOS 2
else:
if not root.has_key('ZGlobals'):
import BTree
app._p_jar.root()['ZGlobals']=BTree.BTree()
get_transaction().note('Added Globals')
get_transaction().commit()
install_products(app)
get_transaction().note('Product installations')
get_transaction().commit()
def import_products(_st=type('')):
# Try to import each product, checking for and catching errors.
......@@ -414,6 +421,9 @@ def install_products(app):
done={}
get_transaction().note('Prior to product installs')
get_transaction().commit()
for product_dir in Products.__path__:
product_names=os.listdir(product_dir)
......@@ -431,12 +441,14 @@ def install_products(app):
if not exists(path_join(package_dir, '__init__.pyc')):
continue
try:
product=__import__("Products.%s" % product_name,
global_dict, global_dict, silly)
misc_=pgetattr(product, 'misc_', {})
if misc_:
if type(misc_) is DictType: misc_=Misc_(product_name, misc_)
if type(misc_) is DictType:
misc_=Misc_(product_name, misc_)
Application.misc_.__dict__[product_name]=misc_
# Set up dynamic project information.
......@@ -467,7 +479,8 @@ def install_products(app):
setattr(Folder, name, method)
if name[-9:]!='__roles__': # not Just setting roles
if (permissions.has_key(name) and
not folder_permissions.has_key(permissions[name])):
not folder_permissions.has_key(
permissions[name])):
permission=permissions[name]
if new_permissions.has_key(permission):
new_permissions[permission].append(name)
......@@ -484,6 +497,8 @@ def install_products(app):
get_transaction().note('Installed product '+product_name)
get_transaction().commit()
except:
get_transaction().abort()
Products.meta_types=Products.meta_types+tuple(meta_types)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment