예제 #1
0
def fix_searchable_text(context=None):
    # Fix bytes in opkapiindex
    # See https://github.com/plone/Products.CMFPlone/issues/2905
    from Products.ZCTextIndex.interfaces import IZCTextIndex
    from Products.ZCTextIndex.interfaces import ILexicon
    catalog = api.portal.get_tool('portal_catalog')
    zctextindex = catalog._catalog.indexes['SearchableText']
    opkapiindex = zctextindex.index
    values = opkapiindex._docwords.values()
    first_item = values[0]
    if isinstance(first_item, bytes):
        log.info('Rebuilding ZCTextIndexes. First item is a byte:')
        log.info(first_item)
        lexica = [i for i in catalog.values() if ILexicon.providedBy(i)]
        for lexicon in lexica:
            lexicon.clear()

        indexes = [
            i for i in catalog.Indexes.objectValues()
            if IZCTextIndex.providedBy(i)
        ]
        for index in indexes:
            try:
                index.clear()
            except AttributeError as e:
                log.info(e)
            log.info('rebuilding {}'.format(index.__name__))
            catalog._catalog.reindexIndex(index.__name__, getRequest())
    else:
        log.info('Not rebuilding ZCTextIndexes. First item is not bytes:')
        log.info(first_item)
예제 #2
0
 def mapSortableIndexes(self, values):
     """Map sortable indexes"""
     catalog = getToolByName(getSite(), 'portal_catalog')._catalog
     sortables = {}
     for key, field in values.get('%s.field' % self.prefix).iteritems():
         if (field['sortable'] and key in catalog.indexes
                 and not IZCTextIndex.providedBy(catalog.getIndex(key))):
             sortables[key] = values.get('%s.field.%s' % (self.prefix, key))
     values['sortable'] = sortables
     return values
예제 #3
0
def upgradeToI18NCaseNormalizer(context):
    """Upgrade lexicon to I18N Case Normalizer
    """
    catalog = getToolByName(context, 'portal_catalog')
    for index in catalog.Indexes.objectValues():
        if IZCTextIndex.providedBy(index):
            index_id = index.getId()
            logger.info("Reindex %s index with I18N Case Normalizer", index_id)
            catalog.manage_clearIndex([index_id])
            catalog.reindexIndex(index_id, aq_get(context, 'REQUEST', None))
        pass
예제 #4
0
def upgradeToI18NCaseNormalizer(context):
    """Upgrade lexicon to I18N Case Normalizer
    """
    catalog = getToolByName(context, 'portal_catalog')
    for index in catalog.Indexes.objectValues():
        if IZCTextIndex.providedBy(index):
            logger.info("Reindex %s index with I18N Case Normalizer",\
                        index.getId())
            catalog.reindexIndex(index.getId(),\
                                 aq_get(context, 'REQUEST', None))
        pass
예제 #5
0
파일: alphas.py 프로젝트: pigaov10/plone4.3
def upgradeToI18NCaseNormalizer(context):
    """Upgrade lexicon to I18N Case Normalizer
    """
    catalog = getToolByName(context, "portal_catalog")
    for index in catalog.Indexes.objectValues():
        if IZCTextIndex.providedBy(index):
            index_id = index.getId()
            logger.info("Reindex %s index with I18N Case Normalizer", index_id)
            catalog.manage_clearIndex([index_id])
            catalog.reindexIndex(index_id, aq_get(context, "REQUEST", None))
        pass
예제 #6
0
    def reindex_zctext_indices(self):
        """Rewrite of plone.app.upgrade.v43.alphas.upgradeToI18NCaseNormalizer
        to use ftw.upgrade progress logging.
        """

        catalog = api.portal.get_tool('portal_catalog')
        for index in catalog.Indexes.objectValues():
            if IZCTextIndex.providedBy(index):
                index_id = index.getId()
                # Clear index first to make sure lexicon gets updated properly
                catalog.manage_clearIndex([index_id])
                self.catalog_rebuild_index(index_id)
 def mapSortableIndexes(self, values):
     """Map sortable indexes"""
     catalog = getToolByName(getSite(), 'portal_catalog')._catalog
     sortables = {}
     for key, field in values.get('%s.field' % self.prefix).iteritems():
         if (
             field['sortable']
             and key in catalog.indexes
             and not IZCTextIndex.providedBy(catalog.getIndex(key))
         ):
             sortables[key] = values.get('%s.field.%s' % (self.prefix, key))
     values['sortable'] = sortables
     return values
예제 #8
0
def reindexZCTextIndex(context):
    """ Reindex ZCTextIndex
    """
    portal = getToolByName(context, 'portal_url').getPortalObject()
    catalog = getToolByName(portal, 'portal_catalog')
    query = {'Language': 'all'}
    brains = catalog(**query)
    indexes = catalog.Indexes.objectValues()
    idxs = []
    for index in indexes:
        if IZCTextIndex.providedBy(index):
            idxs.append(index.getId())

    utils.bulkReindexObjects(context, brains, idxs)
예제 #9
0
def reindexZCTextIndex(context):
    """ Reindex ZCTextIndex
    """
    portal = getToolByName(context, 'portal_url').getPortalObject()
    catalog = getToolByName(portal, 'portal_catalog')
    query = {'Language': 'all'}
    brains = catalog(**query)
    indexes = catalog.Indexes.objectValues()
    idxs = []
    for index in indexes:
        if IZCTextIndex.providedBy(index):
            idxs.append(index.getId())

    utils.bulkReindexObjects(context, brains, idxs)