[Zope-Checkins] SVN: Zope/trunk/ Centralize interfaces defined in Products.ZCTextIndex.
Log message for revision 100817: Centralize interfaces defined in Products.ZCTextIndex. o Leave BBB imports behind in old locations. Changed: U Zope/trunk/doc/CHANGES.rst U Zope/trunk/src/Products/ZCTextIndex/BaseIndex.py U Zope/trunk/src/Products/ZCTextIndex/CosineIndex.py U Zope/trunk/src/Products/ZCTextIndex/HTMLSplitter.py U Zope/trunk/src/Products/ZCTextIndex/IIndex.py U Zope/trunk/src/Products/ZCTextIndex/INBest.py U Zope/trunk/src/Products/ZCTextIndex/IPipelineElement.py U Zope/trunk/src/Products/ZCTextIndex/IPipelineElementFactory.py U Zope/trunk/src/Products/ZCTextIndex/IQueryParseTree.py U Zope/trunk/src/Products/ZCTextIndex/IQueryParser.py U Zope/trunk/src/Products/ZCTextIndex/ISplitter.py U Zope/trunk/src/Products/ZCTextIndex/Lexicon.py U Zope/trunk/src/Products/ZCTextIndex/NBest.py U Zope/trunk/src/Products/ZCTextIndex/OkapiIndex.py U Zope/trunk/src/Products/ZCTextIndex/ParseTree.py U Zope/trunk/src/Products/ZCTextIndex/PipelineFactory.py U Zope/trunk/src/Products/ZCTextIndex/QueryParser.py U Zope/trunk/src/Products/ZCTextIndex/interfaces.py U Zope/trunk/src/Products/ZCTextIndex/tests/testParseTree.py U Zope/trunk/src/Products/ZCTextIndex/tests/testPipelineFactory.py U Zope/trunk/src/Products/ZCTextIndex/tests/testQueryParser.py -=- Modified: Zope/trunk/doc/CHANGES.rst === --- Zope/trunk/doc/CHANGES.rst 2009-06-10 22:10:07 UTC (rev 100816) +++ Zope/trunk/doc/CHANGES.rst 2009-06-10 22:29:12 UTC (rev 100817) @@ -11,14 +11,17 @@ Restructuring + -* Integrated zLOG package back into this package. +- Centralize interfaces defined in Products.ZCTextIndex, leaving BBB + imports behind in old locations. -* Updated documentation to new version number. +- Integrated zLOG package back into this package. +- Updated documentation to new version number. + Features Added ++ -* Updated packages: +- Updated packages: - zope.app.cache = 3.6.0 - zope.app.pagetemplate = 3.7.1 Modified: Zope/trunk/src/Products/ZCTextIndex/BaseIndex.py === --- Zope/trunk/src/Products/ZCTextIndex/BaseIndex.py2009-06-10 22:10:07 UTC (rev 100816) +++ Zope/trunk/src/Products/ZCTextIndex/BaseIndex.py2009-06-10 22:29:12 UTC (rev 100817) @@ -27,8 +27,8 @@ from Persistence import Persistent from zope.interface import implements -from Products.ZCTextIndex.IIndex import IIndex from Products.ZCTextIndex import WidCode +from Products.ZCTextIndex.interfaces import IIndex from Products.ZCTextIndex.SetOps import mass_weightedIntersection from Products.ZCTextIndex.SetOps import mass_weightedUnion Modified: Zope/trunk/src/Products/ZCTextIndex/CosineIndex.py === --- Zope/trunk/src/Products/ZCTextIndex/CosineIndex.py 2009-06-10 22:10:07 UTC (rev 100816) +++ Zope/trunk/src/Products/ZCTextIndex/CosineIndex.py 2009-06-10 22:29:12 UTC (rev 100817) @@ -19,7 +19,7 @@ from BTrees.IIBTree import IIBucket from zope.interface import implements -from Products.ZCTextIndex.IIndex import IIndex +from Products.ZCTextIndex.interfaces import IIndex from Products.ZCTextIndex.BaseIndex import BaseIndex from Products.ZCTextIndex.BaseIndex import inverse_doc_frequency from Products.ZCTextIndex.BaseIndex import scaled_int Modified: Zope/trunk/src/Products/ZCTextIndex/HTMLSplitter.py === --- Zope/trunk/src/Products/ZCTextIndex/HTMLSplitter.py 2009-06-10 22:10:07 UTC (rev 100816) +++ Zope/trunk/src/Products/ZCTextIndex/HTMLSplitter.py 2009-06-10 22:29:12 UTC (rev 100817) @@ -15,7 +15,7 @@ from zope.interface import implements -from Products.ZCTextIndex.ISplitter import ISplitter +from Products.ZCTextIndex.interfaces import ISplitter from Products.ZCTextIndex.PipelineFactory import element_factory class HTMLWordSplitter: Modified: Zope/trunk/src/Products/ZCTextIndex/IIndex.py === --- Zope/trunk/src/Products/ZCTextIndex/IIndex.py 2009-06-10 22:10:07 UTC (rev 100816) +++ Zope/trunk/src/Products/ZCTextIndex/IIndex.py 2009-06-10 22:29:12 UTC (rev 100817) @@ -14,67 +14,4 @@ Index Interface. -from zope.interface import Interface - -class IIndex(Interface): -Interface for an Index. - -def length(): -Return the number of words in the index. - -def document_count(): -Return the number of documents in the index. - -def get_words(docid): -Return a list of wordids for the given docid. - -def search(term): -Execute a search on a single term given as a string. - -Return an IIBTree mapping docid to score, or None if all docs -match due to the lexicon returning no wids for the term (e.g., -
[Zope-Checkins] SVN: Zope/trunk/src/Products/ZCTextIndex/tests/testHTMLSplitter.py Add tests for HTMLSplitter.
Log message for revision 100818: Add tests for HTMLSplitter. Changed: A Zope/trunk/src/Products/ZCTextIndex/tests/testHTMLSplitter.py -=- Added: Zope/trunk/src/Products/ZCTextIndex/tests/testHTMLSplitter.py === --- Zope/trunk/src/Products/ZCTextIndex/tests/testHTMLSplitter.py (rev 0) +++ Zope/trunk/src/Products/ZCTextIndex/tests/testHTMLSplitter.py 2009-06-10 22:29:44 UTC (rev 100818) @@ -0,0 +1,77 @@ +## +# +# Copyright (c) 2009 Zope Corporation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED AS IS AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +## +Test zope.index.text.htmlsplitter + +import unittest + +class HTMLWordSplitterTests(unittest.TestCase): +# Subclasses must define '_getBTreesFamily' +def _getTargetClass(self): +from Products.ZCTextIndex.HTMLSplitter import HTMLWordSplitter +return HTMLWordSplitter + +def _makeOne(self): +return self._getTargetClass()() + +def test_class_conforms_to_ISplitter(self): +from zope.interface.verify import verifyClass +from Products.ZCTextIndex.interfaces import ISplitter +verifyClass(ISplitter, self._getTargetClass()) + +def test_instance_conforms_to_ISplitter(self): +from zope.interface.verify import verifyObject +from Products.ZCTextIndex.interfaces import ISplitter +verifyObject(ISplitter, self._makeOne()) + +def test_process_empty_string(self): +splitter = self._makeOne() +self.assertEqual(splitter.process(['']), []) + +def test_process_no_markup(self): +splitter = self._makeOne() +self.assertEqual(splitter.process(['abc def']), ['abc', 'def']) + +def test_process_w_markup(self): +splitter = self._makeOne() +self.assertEqual(splitter.process(['h1abc/h1 nbsp; pdef/p']), + ['abc', 'def']) + +def test_process_no_markup_w_glob(self): +splitter = self._makeOne() +self.assertEqual(splitter.process(['abc?def hij*klm nop* qrs?']), + ['abc', 'def', 'hij', 'klm', 'nop', 'qrs']) + +def test_processGlob_empty_string(self): +splitter = self._makeOne() +self.assertEqual(splitter.processGlob(['']), []) + +def test_processGlob_no_markup_no_glob(self): +splitter = self._makeOne() +self.assertEqual(splitter.processGlob(['abc def']), ['abc', 'def']) + +def test_processGlob_w_markup_no_glob(self): +splitter = self._makeOne() +self.assertEqual(splitter.processGlob(['h1abc/h1 nbsp; ' + 'pdef/p']), + ['abc', 'def']) + +def test_processGlob_no_markup_w_glob(self): +splitter = self._makeOne() +self.assertEqual(splitter.processGlob(['abc?def hij*klm nop* qrs?']), + ['abc?def', 'hij*klm', 'nop*', 'qrs?']) + +def test_suite(): +return unittest.TestSuite(( +unittest.makeSuite(HTMLWordSplitterTests), +)) ___ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins
Re: [Zope-dev] [Checkins] SVN: zope.app.publisher/trunk/ To make browsers update their caches of resources immediately when the
Hoi, On 2009-06-09 15:51:03 +0200, Stephan Richter srich...@cosmos.phy.tufts.edu said: On Tuesday 09 June 2009, Wolfgang Schnerring wrote: To make browsers update their caches of resources immediately when the resource changes, the absolute URLs of resources can now be made to contain a hash of the resource's contents, so it will look like /++noop++12345/@@/myresource instead of /@@/myresource. - Implemented an AbsoluteURL adapter that computes a hash of the resource's contents and inserts that into the URL. - Content hashes will be cached in memory, except when in developer mode - Introduced a ++noop++ traverser that simply throws away the path segment - Wrote a bit of documentation about resources Mmmh, this looks like a lot of extra code to get behavior that is served better with different tools. Have you looked at z3c.versionedresource and z3c.traverser? Both of those should solve these type of use cases well. The checkin actually is two in one (which aruably is not such a good thing): 1. Make resources compute urls with an IAbsoluteURL adapter so they behave like every other object. 2. Provide an optional hashing adapter (and the ++noop++ namespace). I don't think we have to argue about 1. The ++noop++ and hashing could easily be moved to a different package. The idea behind the hasing is that one should not have to think about new versions or cache invalidations. That's also why in development mode the hash is computed every time and not just once: It aids development a lot. But it helps in deployment as well of course. So, why in a zope package? Because I really think this is a core issue of a web framework. Do we really want to not change any zope.* package any more in regard to new features? Regards, -- Christian Zagrodnick · c...@gocept.com gocept gmbh co. kg · forsterstraße 29 · 06112 halle (saale) · germany http://gocept.com · tel +49 345 1229889 4 · fax +49 345 1229889 1 Zope and Plone consulting and development ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZTK scope (was: [Checkins] SVN: zope.app.publisher/trunk/)
Hello, * Stephan Richter srich...@cosmos.phy.tufts.edu [2009-06-09 15:51]: On Tuesday 09 June 2009, Wolfgang Schnerring wrote: To make browsers update their caches of resources immediately when the resource changes, the absolute URLs of resources can now be made to contain a hash of the resource's contents, so it will look like /++noop++12345/@@/myresource instead of /@@/myresource. Mmmh, this looks like a lot of extra code to get behavior that is served better with different tools. Have you looked at z3c.versionedresource and z3c.traverser? Both of those should solve these type of use cases well. Hmm, it looks like z3c.versionedresource requires me to use a non-standard way to retrieve a resource's URL, which is a major requirement for me; and I must confess I'm not sure how z3c.traverser would help me implement this functionality. I do feel that this incident touches upon a quite important point, and that is the scope of the Zope Toolkit. As I understand it, the ZTK wants to provide support for developing web applications. To do that, I think it should provide solutions to common problems in that area. Browser caches and CSS/JS-files IMHO is a common problem that is well within the scope of the ZTK, and so we should have a ready-to-use solution there. But sure, this functionality can be moved outside of zope.app.publisher, since with r100748 Resource uses IAbsoluteURL, which can be customized externally, so I'll back out the change for the time being. Wolfgang ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] [Checkins] SVN: zope.app.publisher/trunk/ To make browsers update their caches of resources immediately when the
On Wed, Jun 10, 2009 at 3:51 AM, Christian Zagrodnickc...@gocept.com wrote: The checkin actually is two in one (which aruably is not such a good thing): 1. Make resources compute urls with an IAbsoluteURL adapter so they behave like every other object. 2. Provide an optional hashing adapter (and the ++noop++ namespace). I'd actually separate number 2 into 2a (hashing adapter) and 2b (++noop++ namespace). I don't think we have to argue about 1. Agreed. The ++noop++ and hashing could easily be moved to a different package. I'd like to use the ++noop++ functionality separately from the hash calculating URL generation. The idea behind the hasing is that one should not have to think about new versions or cache invalidations. That's also why in development mode the hash is computed every time and not just once: It aids development a lot. But it helps in deployment as well of course. In my apps, I'll likely store a unique ID for each resource, or even use (a variation of) the app's version number for resources. That's why I'd like to use the ++noop++ namespace without the URL generation policy. So, why in a zope package? Because I really think this is a core issue of a web framework. Do we really want to not change any zope.* package any more in regard to new features? It is a core issue, but I'm not sure we've decided how to handle it yet. I'd rather the community try a few things and see if one dominant approach emerges. If so, it can be promoted to the zope namespace. Or not, there's no reason all widely used packages have to be in zope.*. -- Benji York Senior Software Engineer Zope Corporation ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
[Zope-dev] Zope Tests: 8 OK
Summary of messages to the zope-tests list. Period Tue Jun 9 12:00:00 2009 UTC to Wed Jun 10 12:00:00 2009 UTC. There were 8 messages: 8 from Zope Tests. Tests passed OK --- Subject: OK : Zope-2.10 Python-2.4.6 : Linux From: Zope Tests Date: Tue Jun 9 20:51:20 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011907.html Subject: OK : Zope-2.11 Python-2.4.6 : Linux From: Zope Tests Date: Tue Jun 9 20:53:22 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011908.html Subject: OK : Zope-trunk Python-2.4.6 : Linux From: Zope Tests Date: Tue Jun 9 20:55:22 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011909.html Subject: OK : Zope-trunk Python-2.5.4 : Linux From: Zope Tests Date: Tue Jun 9 20:57:24 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011910.html Subject: OK : Zope-trunk Python-2.6.1 : Linux From: Zope Tests Date: Tue Jun 9 20:59:24 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011911.html Subject: OK : Zope-trunk-alltests Python-2.4.6 : Linux From: Zope Tests Date: Tue Jun 9 21:01:24 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011912.html Subject: OK : Zope-trunk-alltests Python-2.5.4 : Linux From: Zope Tests Date: Tue Jun 9 21:03:24 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011913.html Subject: OK : Zope-trunk-alltests Python-2.6.1 : Linux From: Zope Tests Date: Tue Jun 9 21:05:25 EDT 2009 URL: http://mail.zope.org/pipermail/zope-tests/2009-June/011914.html ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
[Zope-dev] Zope2 / Zope3 catalog index fork / divergence
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Christian Theune wrote: On Tue, 2009-06-09 at 20:07 -0400, Tres Seaver wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Chris McDonough wrote: Log message for revision 100775: - Port okascore.c optimization used in okapiiindex from Zope2 catalog implementation. This module is compiled conditionally, based on whether your environment has a working C compiler. - Don't use ``len(self._docweight)`` in okapiindex _search_wids method (obtaining the length of a BTree is very expensive at scale). Instead use self.documentCount(). Also a Zope2 port. Crap! this set of performance fixes was added *six years ago* to the Zope2 version from which zope.index was forked! Hasn't anybody been using this package? We're using this package. The text index I can only remember in a not-so-critical piece where performance currently is not an issue. Also, following checkins even today wouldn't have me remember that this code is shared. The code which now lives in 'zope.index' is a copy-and-rename-everything fork of what was in the Zope2 PluggableIndexes / ZCTextIndex products as of around Christmas, 2002. The fix I was replying to is *far* from the first one which didn't get ported from subsequent changes to the Zope2 indexes, which have obviously been in *heavy* production use. I propose that we consider merging the two implementations, along the lines of the following: 1. Review the change history of the two codebases since the original fork, porting relevant changes from the Z2 indexes to the corresponding Z3 implementations. 2. Review / update the tests for the Z3 indexes, with a goal of 100% coverage, as well as improving the quality of the tests. 3. Re-implement the Z2 indexes as thin wrappers around the Z3 versions, ensuring that all existing Z2 tests continue to pass. This is somewhat the same pattern as Andreas used to merge the ZPT implementations, I think. This effort could be the focus of a sprint team, if there was interest. Tres. - -- === Tres Seaver +1 540-429-0999 tsea...@palladion.com Palladion Software Excellence by Designhttp://palladion.com -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFKL9sQ+gerLs4ltQ4RAksCAKDWRMu820PO+oRQNun0VC1LrFjvOACfU6pE uVtYzoliBjQgI5gark3ALTw= =+WAL -END PGP SIGNATURE- ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Zope2 / Zope3 catalog index fork / divergence
+1 Thanks. Jim On Jun 10, 2009, at 12:10 PM, Tres Seaver wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Christian Theune wrote: On Tue, 2009-06-09 at 20:07 -0400, Tres Seaver wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Chris McDonough wrote: Log message for revision 100775: - Port okascore.c optimization used in okapiiindex from Zope2 catalog implementation. This module is compiled conditionally, based on whether your environment has a working C compiler. - Don't use ``len(self._docweight)`` in okapiindex _search_wids method (obtaining the length of a BTree is very expensive at scale). Instead use self.documentCount(). Also a Zope2 port. Crap! this set of performance fixes was added *six years ago* to the Zope2 version from which zope.index was forked! Hasn't anybody been using this package? We're using this package. The text index I can only remember in a not-so-critical piece where performance currently is not an issue. Also, following checkins even today wouldn't have me remember that this code is shared. The code which now lives in 'zope.index' is a copy-and-rename- everything fork of what was in the Zope2 PluggableIndexes / ZCTextIndex products as of around Christmas, 2002. The fix I was replying to is *far* from the first one which didn't get ported from subsequent changes to the Zope2 indexes, which have obviously been in *heavy* production use. I propose that we consider merging the two implementations, along the lines of the following: 1. Review the change history of the two codebases since the original fork, porting relevant changes from the Z2 indexes to the corresponding Z3 implementations. 2. Review / update the tests for the Z3 indexes, with a goal of 100% coverage, as well as improving the quality of the tests. 3. Re-implement the Z2 indexes as thin wrappers around the Z3 versions, ensuring that all existing Z2 tests continue to pass. This is somewhat the same pattern as Andreas used to merge the ZPT implementations, I think. This effort could be the focus of a sprint team, if there was interest. Tres. - -- === Tres Seaver +1 540-429-0999 tsea...@palladion.com Palladion Software Excellence by Designhttp://palladion.com -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFKL9sQ+gerLs4ltQ4RAksCAKDWRMu820PO+oRQNun0VC1LrFjvOACfU6pE uVtYzoliBjQgI5gark3ALTw= =+WAL -END PGP SIGNATURE- ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope ) -- Jim Fulton Zope Corporation ___ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
Re: [Zope] How to move acl_users from a Zope 2.7.8 server to Zope 2.10.7 ?
On Sun, Jun 7, 2009 at 10:25 AM, Chris Withersch...@simplistix.co.uk wrote: Aleksey Tsalolikhin wrote: Hi. I am moving a Web application from a Zope 2.7.8 server to 2.10.7. How do I migrate the users in acl_users from the Zope 2.7.8 server to the 2.10.7 one? Why don't you just copy the whole Data.fs and start it on the new server? Chris Thanks, Chris. Is it safe to copy Data.fs from Zope 2.7.8 to 2.10.7? The internal format of Data.fs has not changed? Or are you suggesting I try it and see if it works? Thanks, Aleksey ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
Re: [Zope] Is there a Zope migration tool?
Andreas wrote: Since migrations are application specific, you usually have to write a migration script yourself. Zope does not know about changes in your application - that's why Zope can not provide any kind of migration mechanism for you - except providing the low-level export/import on the Python pickle level. And Lennart wrote: What is it you need to migrate? Zope itself needs no migration from 2.7 to 2.10. Thank you for your replies. To clarify, I don't have ANY changes in my application. The only thing changing is that I am moving my application from a SUSE 10.1 Linux system running Zope 2.7.8 to a CentOS 5.3 Linux server running Zope 2.10.7. The purpose of the move is to get off an old and no longer supported Linux distro and onto a new Linux server. This web app is in production, which means I need to move all the data over and all the users without breaking it. I am not a programmer, I am a system administrator. I don't know about the internals of this application, and nobody does, it's not documented, and the original programmer is not available. I am trying to figure out how move this beastie over with all its data and all its users. What I have so far is: export application-related items in the root folder on the Zope 2.7 server, plus the acl_users folder; and import them all into the Zope 2.10 server. This seems to work. I just want to know if there is a better way, especially since the Zope server warns against doing this unless the installations are identical, and in this case they are not. If my way works, and there is no better way, my job is done. I want to make sure I've paid due diligence by asking on this list if there is a better way, oh wise people who know and use Zope? Best, -at ___ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )