[Zodb-checkins] CVS: Zope/lib/python/ZODB - Mount.py:1.13
Shane Hathaway
shane@digicool.com
Wed, 5 Dec 2001 11:45:59 -0500
Update of /cvs-repository/Zope/lib/python/ZODB
In directory cvs.zope.org:/tmp/cvs-serv18727
Modified Files:
Mount.py
Log Message:
Same as 2_5 branch.
=== Zope/lib/python/ZODB/Mount.py 1.12 => 1.13 ===
dblock=thread.allocate_lock()
-try:
- # Make special provisions for ZClasses if we're in a Zope
- # installation.
- from Zope.ClassFactory import ClassFactory
-
- def RootDefsClassFactory(jar, module, name):
- # Use the class definitions given at
- # the root of the Zope installation.
- while hasattr(jar, '_mount_parent_jar'):
- jar = jar._mount_parent_jar
- return ClassFactory(jar, module, name)
-except:
- ClassFactory = None
- RootDefsClassFactory = None
+
+def parentClassFactory(jar, module, name):
+ # Use the class factory from the parent database.
+ parent_db = getattr(getattr(jar, '_mount_parent_jar', None),
+ '_db', None)
+ if parent_db is None:
+ _globals = {}
+ _silly = ('__doc__',)
+ return getattr(__import__(
+ module, _globals, _globals, _silly), name)
+ else:
+ return parent_db._classFactory(jar, module, name)
class MountPoint(Persistence.Persistent, Acquisition.Implicit):
@@ -104,11 +102,8 @@
newMount = 1
dbs[params] = (db, {self.__mountpoint_id:1})
- if RootDefsClassFactory is not None and \
- getattr(self, '_classDefsFromRoot', 1):
- db.setClassFactory(RootDefsClassFactory)
- elif ClassFactory is not None:
- db.setClassFactory(ClassFactory)
+ if getattr(self, '_classDefsFromRoot', 1):
+ db.setClassFactory(parentClassFactory)
else:
db, mounts = dbInfo
# Be sure this object is in the list of mount points.