X-Git-Url: https://scm.cri.minesparis.psl.eu/git/Plinn.git/blobdiff_plain/3c4367d8e03450e9a73e61f4247145d2b6c86a33..959d888c17d1403d2eeecc19bc4b5e2c8d1debf6:/Products/Plinn/_zctl/folders2BTrees.py diff --git a/Products/Plinn/_zctl/folders2BTrees.py b/Products/Plinn/_zctl/folders2BTrees.py new file mode 100644 index 0000000..a7b8a4a --- /dev/null +++ b/Products/Plinn/_zctl/folders2BTrees.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +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 +from OFS.interfaces import IObjectManager +from zope.interface import providedBy +from Products.Plinn.Folder import PlinnFolder +from Products.Plinn.HugePlinnFolder import HugePlinnFolder +from Products.Plinn.migration.folder import migrateFolder + +def recurseMigrateFolders(parent) : + for child in parent.objectValues() : + if IObjectManager.providedBy(child) : + recurseMigrateFolders(child) + if isinstance(child, PlinnFolder) and \ + not isinstance(child, HugePlinnFolder) : + migrated = migrateFolder(child, parent) + # pseudo _finishContrsuction to preserve dates. + migrated._setPortalTypeName('Huge Plinn Folder') + migrated.reindexObject() + + + + + +parser = ArgumentParser(description="Convert all regular Plinn Folder to Huge Plinn Folder") +parser.add_argument('portal_path') +parser.add_argument('--dry-run', action='store_true') +args = parser.parse_args() +portal = app.unrestrictedTraverse(args.portal_path) +setSite(portal) + +recurseMigrateFolders(portal) + +if not args.dry_run : + transaction.commit() \ No newline at end of file