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)) reindex_ids = [] for idx in self.Indexes.objectValues(): bases = [str(name) for name in idx.__class__.__bases__] found = False if idx.meta_type == 'PathIndex': found = True else: for base in bases: if 'UnIndex' in base: found = True break 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) if idx.meta_type == 'DateRangeIndex': since_field = getattr(idx, '_since_field', None) until_field = getattr(idx, '_until_field', 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) if idx.meta_type == 'DateRangeIndex': setattr(new_idx, '_since_field', since_field) setattr(new_idx, '_until_field', until_field) reindex_ids.append(idx_id) if reindex_ids: LOG.info('Reindexing %s' % ', '.join(reindex_ids)) self.manage_reindexIndex(reindex_ids, REQUEST) self._migrated_280 = True LOG.info('Finished migration of indexes for %s' % self.absolute_url(1)) if RESPONSE: RESPONSE.redirect( URL1 + '/manage_main?manage_tabs_message=Indexes%20converted%20and%20reindexed' )
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)) reindex_ids = [] for idx in self.Indexes.objectValues(): bases = [str(name) for name in idx.__class__.__bases__] found = False if idx.meta_type == 'PathIndex': found = True else: for base in bases: if 'UnIndex' in base: found = True break 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) if idx.meta_type == 'DateRangeIndex': since_field = getattr(idx, '_since_field', None) until_field = getattr(idx, '_until_field', 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) if idx.meta_type == 'DateRangeIndex': setattr(new_idx, '_since_field', since_field) setattr(new_idx, '_until_field', until_field) reindex_ids.append(idx_id) if reindex_ids: LOG.info('Reindexing %s' % ', '.join(reindex_ids)) self.manage_reindexIndex(reindex_ids, REQUEST) self._migrated_280 = True LOG.info('Finished migration of indexes for %s' % self.absolute_url(1)) if RESPONSE: RESPONSE.redirect( URL1 + '/manage_main?manage_tabs_message=Indexes%20converted%20and%20reindexed')