X-Git-Url: https://svn.cri.ensmp.fr/git/Plinn.git/blobdiff_plain/787a108deee8d7b54ce081d4f679c7c7aa25a9a3..1a0790a4a065c0d2e8a45b08188791b51a35bc29:/_zctl/rebuild-catalog.py?ds=inline diff --git a/_zctl/rebuild-catalog.py b/_zctl/rebuild-catalog.py index e9d0395..1436969 100644 --- a/_zctl/rebuild-catalog.py +++ b/_zctl/rebuild-catalog.py @@ -5,15 +5,12 @@ from zope.site.hooks import setSite from Products.CMFCore.CMFCatalogAware import CMFCatalogAware import transaction -# portal = app.realismc -# setSite(portal) -# ctool = portal.portal_catalog -# -# errorLog = open('/home/zope/checkcontents-errors.log', 'w') count = 0 +errorLog = None def checkContents(ob) : global count + global errorLog try : print ob.absolute_url() except Exception, e: @@ -23,7 +20,8 @@ def checkContents(ob) : print >> errorLog if isinstance(aq_base(ob), CMFCatalogAware) : - assert ob._getCatalogTool() + ctool = ob._getCatalogTool() + assert ctool try : ctool.indexObject(ob) count = count + 1 @@ -40,23 +38,37 @@ def checkContents(ob) : checkContents(v) -parser = ArgumentParser(description="Deflate blobs backup set.") -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() -portal = app.unrestrictedTraverse(args.portal_path) -setSite(portal) -ctool = portal.portal_catalog -errorLogPath = os.path.expanduser(args.errorLogPath) -errorLog = open(errorLogPath, 'w') - -try : - checkContents(portal) - transaction.commit() - print count - print 'Done.' -finally : - errorLog.close() +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)