[Zope-Checkins] CVS: Zope/lib/python/App - ApplicationManager.py:1.88.4.1 Extensions.py:1.21.12.1 Product.py:1.63.2.1 Undo.py:1.32.44.1 config.py:1.4.2.1 version_txt.py:1.11.12.1
Chris McDonough
chrism@zope.com
Mon, 21 Jul 2003 12:39:19 -0400
Update of /cvs-repository/Zope/lib/python/App
In directory cvs.zope.org:/tmp/cvs-serv17213/lib/python/App
Modified Files:
Tag: Zope-2_7-branch
ApplicationManager.py Extensions.py Product.py Undo.py
config.py version_txt.py
Log Message:
Merge changes from HEAD since the release of Zope 2.7a1 into the Zope-2_7-branch in preparation for release of Zope 2.7b1.
=== Zope/lib/python/App/ApplicationManager.py 1.88 => 1.88.4.1 ===
--- Zope/lib/python/App/ApplicationManager.py:1.88 Sat Apr 12 21:56:07 2003
+++ Zope/lib/python/App/ApplicationManager.py Mon Jul 21 12:35:11 2003
@@ -28,6 +28,7 @@
from version_txt import version_txt
from cStringIO import StringIO
from AccessControl import getSecurityManager
+from Products.PageTemplates.PageTemplateFile import PageTemplateFile
import zLOG
import Lifetime
@@ -39,7 +40,7 @@
def locked_in_version(self): return 0
class DatabaseManager(Fake, SimpleItem.Item, Acquisition.Implicit):
- """Database management"""
+ """Database management (legacy) """
manage=manage_main=DTMLFile('dtml/dbMain', globals())
manage_main._setName('manage_main')
id ='DatabaseManagement'
@@ -69,6 +70,70 @@
Globals.default__class_init__(DatabaseManager)
+class FakeConnection:
+ # Supports the methods of Connection that CacheManager needs
+
+ def __init__(self, db, parent_jar):
+ self._db = db
+ self.version = parent_jar.getVersion()
+
+ def db(self):
+ return self._db
+
+ def getVersion(self):
+ return self.version
+
+class DatabaseChooser (SimpleItem.SimpleItem):
+ """Lets you choose which database to view
+ """
+ meta_type = 'Database Management'
+ name = title = 'Database Management'
+ icon = 'p_/DatabaseManagement_icon'
+ isPrincipiaFolderish = 1
+
+ manage_options=(
+ {'label':'Databases', 'action':'manage_main'},
+ )
+
+ manage_main = PageTemplateFile('www/chooseDatabase.pt', globals())
+
+ def __init__(self, id):
+ self.id = id
+
+ def getDatabaseNames(self):
+ configuration = getConfiguration()
+ names = configuration.dbtab.listDatabaseNames()
+ names.sort()
+ return names
+
+ def __getitem__(self, name):
+ configuration = getConfiguration()
+ db = configuration.dbtab.getDatabase(name=name)
+ m = AltDatabaseManager()
+ m.id = name
+ m._p_jar = FakeConnection(db, self.getPhysicalRoot()._p_jar)
+ return m.__of__(self)
+
+ def __bobo_traverse__(self, request, name):
+ configuration = getConfiguration()
+ if configuration.dbtab.hasDatabase(name):
+ return self[name]
+ return getattr(self, name)
+
+ def tpValues(self):
+ names = self.getDatabaseNames()
+ res = []
+ for name in names:
+ m = AltDatabaseManager()
+ m.id = name
+ # Avoid opening the database just for the tree widget.
+ m._p_jar = None
+ res.append(m.__of__(self))
+ return res
+
+Globals.InitializeClass(DatabaseChooser)
+
+
class VersionManager(Fake, SimpleItem.Item, Acquisition.Implicit):
"""Version management"""
manage=manage_main=DTMLFile('dtml/versionManager', globals())
@@ -207,7 +272,7 @@
__roles__=('Manager',)
isPrincipiaFolderish=1
- Database= DatabaseManager()
+ Database= DatabaseChooser('Database') #DatabaseManager()
Versions= VersionManager()
DebugInfo=DebugManager()
DavLocks = DavLockManager()
@@ -465,3 +530,11 @@
self._objects = tuple(lst)
return Folder.objectIds(self, spec)
+
+class AltDatabaseManager(DatabaseManager, CacheManager):
+ """Database management DBTab-style
+ """
+ db_name = ApplicationManager.db_name
+ db_size = ApplicationManager.db_size
+ manage_pack = ApplicationManager.manage_pack
+
=== Zope/lib/python/App/Extensions.py 1.21 => 1.21.12.1 ===
--- Zope/lib/python/App/Extensions.py:1.21 Tue Feb 11 12:17:04 2003
+++ Zope/lib/python/App/Extensions.py Mon Jul 21 12:35:11 2003
@@ -17,7 +17,7 @@
$Id$'''
__version__='$Revision$'[11:-2]
-import os, zlib, rotor, imp
+import os, zlib, imp
import Products
path_split=os.path.split
path_join=os.path.join
@@ -110,6 +110,7 @@
base, ext = os.path.splitext(module)
if ext in ('py', 'pyp', 'pyc'):
+ # XXX should never happen; splitext() keeps '.' with the extension
p = base
else:
p = module
@@ -128,6 +129,7 @@
m=binmod.__dict__
elif ext=='.pyp':
+ import rotor
prod_id=module.split('.', 1)[0]
data=zlib.decompress(
rotor.newrotor(prod_id +' shshsh').decrypt(open(p,'rb').read())
=== Zope/lib/python/App/Product.py 1.63 => 1.63.2.1 ===
--- Zope/lib/python/App/Product.py:1.63 Mon Jun 9 10:22:57 2003
+++ Zope/lib/python/App/Product.py Mon Jul 21 12:35:11 2003
@@ -34,7 +34,7 @@
# on restart if there is still a product directory.
-import os, re, zlib, marshal, rotor, cPickle
+import os, re, zlib, marshal, cPickle
from cgi import escape
from urllib import quote
@@ -197,6 +197,7 @@
id=self.id
+ import rotor
import tar
rot=rotor.newrotor(id+' shshsh')
ar=tar.tgzarchive("%s-%s" % (id, self.version))
@@ -437,7 +438,9 @@
def __init__(self, f, rot):
self._c=zlib.decompressobj()
self._b=''
- if type(rot) is type(''): rot=rotor.newrotor(rot)
+ if isinstance(rot, str):
+ import rotor
+ rot=rotor.newrotor(rot)
self._rot=rot
rot.decrypt('')
self._f=f
=== Zope/lib/python/App/Undo.py 1.32 => 1.32.44.1 ===
--- Zope/lib/python/App/Undo.py:1.32 Thu Oct 3 14:28:54 2002
+++ Zope/lib/python/App/Undo.py Mon Jul 21 12:35:11 2003
@@ -16,6 +16,7 @@
import base64
+from Acquisition import aq_base, aq_parent, aq_inner
from AccessControl import getSecurityManager
from DateTime import DateTime
import Globals, ExtensionClass
@@ -86,11 +87,17 @@
path=''
if path: spec['user_name']=Prefix(path)
- # We also only want to undo things done here
- opath='/'.join(self.getPhysicalPath())
+ if getattr(aq_parent(aq_inner(self)), '_p_jar', None) == self._p_jar:
+ # We only want to undo things done here (and not in mounted
+ # databases)
+ opath='/'.join(self.getPhysicalPath())
+ else:
+ # Special case: at the root of a database,
+ # allow undo of any path.
+ opath = None
if opath: spec['description']=Prefix(opath)
- r=Globals.UndoManager.undoInfo(
+ r = self._p_jar.db().undoInfo(
first_transaction, last_transaction, spec)
encode = base64.encodestring
@@ -114,7 +121,8 @@
def manage_undo_transactions(self, transaction_info=(), REQUEST=None):
"""
"""
- undo=Globals.UndoManager.undo
+ undo=self._p_jar.db().undo
+
for tid in transaction_info:
tid=tid.split()
if tid:
=== Zope/lib/python/App/config.py 1.4 => 1.4.2.1 ===
--- Zope/lib/python/App/config.py:1.4 Mon May 19 09:09:49 2003
+++ Zope/lib/python/App/config.py Mon Jul 21 12:35:11 2003
@@ -71,14 +71,11 @@
class DefaultConfiguration:
def __init__(self):
from App import FindHomes
- from Zope.Startup.datatypes import getDefaultDatabaseFactory
self.clienthome = FindHomes.CLIENT_HOME
self.instancehome = FindHomes.INSTANCE_HOME
self.softwarehome = FindHomes.SOFTWARE_HOME
self.zopehome = FindHomes.ZOPE_HOME
self.debug_mode = True
- self.db_mount_tab = {'/':'main'}
- self.db_name_tab = {'main':getDefaultDatabaseFactory(self)}
=== Zope/lib/python/App/version_txt.py 1.11 => 1.11.12.1 ===
--- Zope/lib/python/App/version_txt.py:1.11 Thu Feb 13 10:55:06 2003
+++ Zope/lib/python/App/version_txt.py Mon Jul 21 12:35:11 2003
@@ -36,7 +36,7 @@
'\.(?P<minor>[0-9]+)\.(?P<micro>[0-9]+)'
'(?P<status>[A-Za-z]+)?(?P<release>[0-9]+)?')
try:
- s = open(fn).read()
+ s = open(fn).read().strip()
except IOError:
ss = 'unreleased version'
_zope_version = (-1, -1, -1, '', -1)