def _moveToPropertySheet(portal):
    # phase 1: copy properties to registry
    logger.info("Copying old property sheet values to registry")
    registry = queryUtility(IRegistry)
    settings = registry.forInterface(IPortalTabsSettings, check=False)
    old_properties = portal.portal_properties.portaltabs_settings
    settings.manageable_categories = tuple()
    for p in old_properties.manageable_categories:
        id, title = p.split("|")
        settings.manageable_categories += (PortalActionCategory(id, title.decode("utf-8")),)
        logger.info("...%s copied" % id)
    # phase 2: delete property sheet
    portal.portal_properties.manage_delObjects(["portaltabs_settings"])
    logger.info("Old portaltabs_settings property sheet deleted")
def migrateTo2100(portal):
    setup_tool = getToolByName(portal, "portal_setup")
    logger.info("Registering new permission")
    setup_tool.runAllImportStepsFromProfile("profile-collective.portaltabs:to_2100")
    logger.info("Migrated to 0.4.0")
def migrateTo2000(portal):
    setup_tool = getToolByName(portal, "portal_setup")
    setup_tool.runAllImportStepsFromProfile(PROFILE_ID)
    _moveToPropertySheet(portal)
    logger.info("Migrated to 0.3.0")