[Zope-Checkins] SVN: Zope/trunk/ - Collector #1595: same as in
Collector #1132 for indexes derived from
Andreas Jung
andreas at andreas-jung.com
Sun Jan 30 08:30:06 EST 2005
Log message for revision 28979:
- Collector #1595: same as in Collector #1132 for indexes derived from
UnIndex. Exisiting ZCatalog instances must be converted manually
by calling the "manage_convertIndexes" method through-the-web for
every single ZCatalog instance.
- added manage_convertIndexes()
- removed manage_convertIndex() (obsolete)
Changed:
U Zope/trunk/doc/CHANGES.txt
U Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.py
-=-
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt 2005-01-30 12:43:24 UTC (rev 28978)
+++ Zope/trunk/doc/CHANGES.txt 2005-01-30 13:30:06 UTC (rev 28979)
@@ -381,6 +381,11 @@
from such an old version to Zope 2.8, you need to clear and reindex
your ZCatalog).
+ - Collector #1595: same as in Collector #1132 for indexes derived from
+ UnIndex. Exisiting ZCatalog instances must be converted manually
+ by calling the "manage_convertIndexes" method through-the-web for
+ every single ZCatalog instance.
+
- Collector #1457: ZCTextIndex's QueryError and ParseError
are now available for import from untrusted code.
Modified: Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.py
===================================================================
--- Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.py 2005-01-30 12:43:24 UTC (rev 28978)
+++ Zope/trunk/lib/python/Products/ZCatalog/ZCatalog.py 2005-01-30 13:30:06 UTC (rev 28979)
@@ -39,6 +39,7 @@
from Products.PluginIndexes.TextIndex import Splitter
from IZCatalog import IZCatalog
from ProgressHandler import ZLogHandler
+from zLOG import LOG, INFO
LOG = logging.getLogger('Zope.ZCatalog')
@@ -902,54 +903,41 @@
self.pgthreshold = 0
return self.pgthreshold
- def manage_convertBTrees(self, threshold=200):
- """Convert the catalog's data structures to use BTrees package"""
- assert type(threshold) is type(0)
- tt=time.time()
- ct=time.clock()
- self._catalog._convertBTrees(threshold)
- tt=time.time()-tt
- ct=time.clock()-ct
- return 'Finished conversion in %s seconds (%s cpu)' % (tt, ct)
+ def manage_convertIndexes(self, REQUEST=None, RESPONSE=None, URL1=None):
+ """Recreate indexes derived from UnIndex because the implementation of
+ __len__ changed in Zope 2.8. Pre-Zope 2.7 installation used to implement
+ __len__ as persistent attribute of the index instance which is totally
+ incompatible with the new extension class implementation based on new-style
+ classes.
+ """
+ LOG.info('Start migration of indexes for %s' % self.absolute_url(1))
- def manage_convertIndex(self, ids, REQUEST=None, RESPONSE=None, URL1=None):
- """convert old-style indexes to new-style indexes"""
+ for idx in self.Indexes.objectValues():
+ bases = [str(name) for name in idx.__class__.__bases__]
+ found = False
+ for base in bases:
+ if 'UnIndex' in base:
+ found = True
+ break
- from Products.PluginIndexes.KeywordIndex import KeywordIndex
- from Products.PluginIndexes.FieldIndex import FieldIndex
- from Products.PluginIndexes.TextIndex import TextIndex
+ if found:
+ idx_type = idx.meta_type
+ idx_id = idx.getId()
+ LOG.info('processing index %s' % idx_id)
+ indexed_attrs = getattr(idx, 'indexed_attrs', None)
+ self.delIndex(idx.getId())
+ self.addIndex(idx_id, idx_type)
+ new_idx = self.Indexes[idx_id]
+ if indexed_attrs:
+ setattr(new_idx, 'indexed_attrs', indexed_attrs)
+ self.manage_reindexIndex(idx_id, REQUEST)
- converted = []
- for id in ids:
- idx = self.Indexes[id]
+ RESPONSE.redirect(
+ URL1 +
+ '/manage_main?manage_tabs_message=Indexes%20converted%20and%20reindexed')
- iface = getattr(idx,'__implements__',None)
- if iface is None:
- mt = idx.meta_type
-
- converted.append(id)
- self.delIndex(id)
-
- if mt in ('Field Index','Keyword Index'):
- self.addIndex(id,mt.replace(' ',''))
- elif mt == 'Text Index':
- # TODO: Lexicon handling to be added
- self.addIndex(id,'TextIndex')
-
- if converted:
- RESPONSE.redirect(
- URL1 +
- '/manage_main?manage_tabs_message=Indexes%20converted')
- else:
- RESPONSE.redirect(
- URL1 +
- '/manage_main?'
- 'manage_tabs_message='
- 'No%20indexes%20found%20to%20be%20converted')
-
-
#
# Indexing methods
#
More information about the Zope-Checkins
mailing list