X-Git-Url: https://scm.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/3c4367d8e03450e9a73e61f4247145d2b6c86a33..959d888c17d1403d2eeecc19bc4b5e2c8d1debf6:/_zctl/rebuild-catalog.py diff --git a/_zctl/rebuild-catalog.py b/_zctl/rebuild-catalog.py deleted file mode 100644 index 1436969..0000000 --- a/_zctl/rebuild-catalog.py +++ /dev/null @@ -1,74 +0,0 @@ -from argparse import ArgumentParser -import os.path -from Acquisition import aq_base -from zope.site.hooks import setSite -from Products.CMFCore.CMFCatalogAware import CMFCatalogAware -import transaction - -count = 0 -errorLog = None - -def checkContents(ob) : - global count - global errorLog - try : - print ob.absolute_url() - except Exception, e: - print >> errorLog, '%s/%s' % (ob.aq_parent.absolute_url(), ob.aq_base.id) - print >> errorLog, getattr(ob, 'portal_type', getattr(ob, 'meta_type', '')) - print >> errorLog, e - print >> errorLog - - if isinstance(aq_base(ob), CMFCatalogAware) : - ctool = ob._getCatalogTool() - assert ctool - try : - ctool.indexObject(ob) - count = count + 1 - if count % 1000 == 0 : - transaction.commit() - print count, 'commit.' - except Exception, e: - print >> errorLog, '%s/%s' % (ob.aq_parent.absolute_url(), ob.aq_base.id) - print >> errorLog, e - - if hasattr(aq_base(ob), 'objectItems') : - obs = ob.objectItems() - for k, v in obs : - checkContents(v) - - -def indexMemberdata(portal) : - mtool = portal.portal_membership - ctool = portal.portal_catalog - for m in mtool.getOtherMembers([]) : - ctool.indexObject(m) - -def main(path) : - portal = app.unrestrictedTraverse(path) - setSite(portal) - errorLogPath = os.path.expanduser(args.errorLogPath) - global errorLog - errorLog = open(errorLogPath, 'w') - - try : - checkContents(portal) - transaction.commit() - indexMemberdata(portal) - transaction.commit() - print count - print 'Done.' - finally : - errorLog.close() - - - -if __name__ == '__main__': - parser = ArgumentParser(description="Rebuild entire catalog by walking contents tree.") - parser.add_argument('portal_path') - parser.add_argument('--error-log', help='Error log file. Default: ~/catalog-rebuild-error.log', - default='~/catalog-rebuild-error.log', required=False, dest='errorLogPath') - - args = parser.parse_args() - main(args.portal_path) -