def install(portal, reinstall=False):
    """ (Re)Install this product.

        This external method is need, because portal_quickinstaller doens't
        know what GenericProfile profile to apply when reinstalling a product.
    """
    setup_tool = getToolByName(portal, 'portal_setup')
    if reinstall:
        step = None
        profile_id = 'quintagroup.seoptimizer:default'
        steps_to_run = [
            s['id']
            for s in setup_tool.listUpgrades(profile_id, show_old=False)
        ]
        for step_id in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
            step.doStep(setup_tool)
            msg = "Ran upgrade step %s for profile %s" \
                  % (step.title, profile_id)
            logger.log(logging.INFO, msg)
        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            setup_tool.setLastVersionForProfile(profile_id, step.dest)
        return "Ran all reinstall steps."
    else:
        setup_tool.runAllImportStepsFromProfile(INSTALL)
        return "Ran all install steps."
Example #2
0
    def runUpgradeStep(self, profile, destination):
        """Run upgrade step of a profile towards a destination
        """
        if type(destination) == int:
            destination = str(destination)

        if not ':' in profile:
            profile = '%s:default' % profile

        upgrades = self.psetup.listUpgrades(profile, show_old=True)
        destpath = tuple(destination.split('.'))
        for upgrade in upgrades:
            if isinstance(upgrade, list):
                steps = [u['id'] for u in upgrade if u['dest'] == destpath]
                if steps:
                    steps_to_run = steps
                    break
            else:
                if upgrade['dest'] == destpath:
                    steps_to_run = [upgrade['id']]
                    break
        else:
            steps_to_run = None

        if not steps_to_run:
            raise KeyError, "Upgrade %s doesn't exist in profile %s" % (destination, profile)

        for step_id in steps_to_run:
            upgrade_step = _upgrade_registry.getUpgradeStep(profile, step_id)
            upgrade_step.doStep(self.psetup)

        # update profile upgrade version
        self.psetup._profile_upgrade_versions[profile] = destpath
        LOG.info("Ran %s upgrade step %s", profile, destination)
Example #3
0
def runUpgradeSteps(site, profile_id, product_name, check_installed=True):
    """Perform all available upgrade steps for profile_id.
    """
    log.info("Running available upgrade steps for profile " + profile_id)

    if check_installed and not isInstalled(site, product_name):
        log.info("Product %s is not installed in site" % str(product_name))
        return

    setup_tool = getattr(site, 'portal_setup')
    # These have not been run:
    steps_to_run = setup_tool.listUpgrades(profile_id)

    step = None
    for step_info in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_info['id'])
        if step is not None:
            step.doStep(setup_tool)
            msg = "Ran upgrade step '%s' for profile %s. Source: %s, dest: %s" % (
                                                step.title,
                                                profile_id,
                                                str(step.source),
                                                str(step.dest))
            log.info(msg)

    # We update the profile version to the last one we have reached
    # with running an upgrade step.
    if step and step.dest is not None and step.checker is None:
        setup_tool.setLastVersionForProfile(profile_id, step.dest)
Example #4
0
    def doUpgrades(self, profile_id, steps_to_run):
        """Perform all selected upgrade steps.
        """
        step = None
        if steps_to_run:
            self.log("Upgrading profile %r to %r" %
                     (profile_id, steps_to_run[0]['sdest']))
        for info in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, info['id'])
            if step is not None:
                msg = 'profile {0} from {ssource} to {sdest}: {title}'.format(
                    profile_id, **info)
                self.log("Running upgrade step for {0}.".format(msg))
                step.doStep(self.setup)
                self.log("Finished upgrade step for {0}.".format(msg))

        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            self.setup.setLastVersionForProfile(profile_id, step.dest)
        else:
            raise ValueError(
                'Upgrade steps %r finished for profile %r '
                'but no new version %r recorded.' %
                (steps_to_run, profile_id, '.'.join(step.dest)))

        self.commit("Upgraded profile %r to %r" %
                    (profile_id, '.'.join(step.dest)))
def importVarious(context):
    """Run the setup handlers for the default profile"""
    if context.readDataFile('collective_lineage-default.txt') is None:
        return

    # run the upgrade steps for this package
    portal = getSite()
    setup_tool = getToolByName(portal, 'portal_setup')
    profile_id = "collective.lineage:default"
    upgrade_steps = setup_tool.listUpgrades(profile_id)
    steps_to_run = []
    for step in upgrade_steps:
        if isinstance(step, list):
            # this is a group of steps
            for new_step in step:
                steps_to_run.append(new_step['step'].id)
        else:
            steps_to_run.append(step['step'].id)

    #################
    # from GS tool...
    #################
    for step_id in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
        if step is not None:
            step.doStep(setup_tool)

    # XXX should be a bit smarter about deciding when to up the
    #     profile version
    profile_info = _profile_registry.getProfileInfo(profile_id)
    version = profile_info.get('version', None)
    if version is not None:
        setup_tool.setLastVersionForProfile(profile_id, version)
Example #6
0
def install(self, reinstall=False):
    """ Install skin with GenericSetup install profile
    """
    ps = getToolByName(self, 'portal_setup')
    mtool = getToolByName(self, 'portal_migration')
    plone_version = mtool.getFileSystemVersion()
    isPlone3 = plone_version.startswith('3')
    isPlone4 = plone_version.startswith('4')

    if reinstall and (isPlone3 or isPlone4):
        step = None
        profile_id = 'quintagroup.plonegooglesitemaps:default'
        steps_to_run = [s['id'] for s in
                        ps.listUpgrades(profile_id, show_old=False)]
        for step_id in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
            step.doStep(ps)
            msg = "Ran upgrade step %s for profile %s" \
                  % (step.title, profile_id)
            logger.log(logging.INFO, msg)
        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            ps.setLastVersionForProfile(profile_id, step.dest)
        return "Ran all reinstall steps."

    if (isPlone3 or isPlone4):
        # if this is plone 3.x
        (ps.aq_base).__of__(self).runAllImportStepsFromProfile(PROFILE)
    else:
        active_context_id = ps.getImportContextID()
        ps.setImportContext(PROFILE)
        ps.runAllImportSteps()
        ps.setImportContext(active_context_id)
Example #7
0
def runUpgradeSteps(site, profile_id, product_name, check_installed=True):
    """Perform all available upgrade steps for profile_id.
    """
    log.info("Running available upgrade steps for profile " + profile_id)

    if check_installed and not isInstalled(site, product_name):
        log.info("Product %s is not installed in site" % str(product_name))
        return

    setup_tool = getattr(site, 'portal_setup')
    # These have not been run:
    steps_to_run = setup_tool.listUpgrades(u'Products.TinyMCE:TinyMCE')

    step = None
    for step_info in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_info['id'])
        if step is not None:
            step.doStep(setup_tool)
            msg = "Ran upgrade step '%s' for profile %s. Source: %s, dest: %s" % (
                                                step.title,
                                                profile_id,
                                                str(step.source),
                                                str(step.dest))
            log.info(msg)

    # We update the profile version to the last one we have reached
    # with running an upgrade step.
    if step and step.dest is not None and step.checker is None:
        setup_tool.setLastVersionForProfile(profile_id, step.dest)
    def doUpgrades(self, profile_id, steps_to_run):
        """Perform all selected upgrade steps.
        """
        step = None
        if steps_to_run:
            self.log("Upgrading profile %r to %r" %
                     (profile_id, steps_to_run[0]['sdest']))
        for step in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, step['id'])
            if step is not None:
                self.log("Running upgrade step %r for profile %r."
                         % (step.title, profile_id))
                step.doStep(self.setup)
                self.log("Ran upgrade step %s for profile %s"
                         % (step.title, profile_id))

        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            self.setup.setLastVersionForProfile(profile_id, step.dest)
        else:
            raise ValueError(
                'Upgrade steps %r finished for profile %r '
                'but no new version %r recorded.' %
                (steps_to_run, profile_id, '.'.join(step.dest)))

        self.commit("Upgraded profile %r to %r" %
                    (profile_id, '.'.join(step.dest)))
Example #9
0
    def manage_doUpgrades(self, request=None):
        """Perform all selected upgrade steps.
        """
        if request is None:
            request = self.REQUEST
        logger = logging.getLogger('GenericSetup')
        steps_to_run = request.form.get('upgrades', [])
        profile_id = request.get('profile_id', '')
        step = None
        for step_id in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
            if step is not None:
                step.doStep(self)
                msg = "Ran upgrade step %s for profile %s" % (step.title,
                                                              profile_id)
                logger.log(logging.INFO, msg)

        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            self.setLastVersionForProfile(profile_id, step.dest)

        url = self.absolute_url()
        request.RESPONSE.redirect("%s/manage_upgrades?saved=%s" %
                                  (url, profile_id))
Example #10
0
def to42final_cmfeditions_registry_bases(context):
    """install the component registry bases modifier."""
    # for portals upgraded from older versions, the cmfeditions
    # profile isn't installed and so has no installed version number.
    # this applies a necessary upgrade step but also establishes a
    # version for the profile
    setup = getToolByName(context, 'portal_setup')

    # Copied from Products.GenericSetup.tool.SetupTool.manage_doUpgrades
    logger = logging.getLogger('GenericSetup')
    steps_to_run = ['36634937']
    profile_id = 'Products.CMFEditions:CMFEditions'
    step = None
    for step_id in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
        if step is not None:
            step.doStep(setup)
            msg = "Ran upgrade step %s for profile %s" % (step.title,
                                                          profile_id)
            logger.log(logging.INFO, msg)

    # We update the profile version to the last one we have reached
    # with running an upgrade step.
    if step and step.dest is not None and step.checker is None:
        setup.setLastVersionForProfile(profile_id, step.dest)
Example #11
0
    def doUpgrades(self, profile_id, steps_to_run):
        """Perform all selected upgrade steps.
        """
        step = None
        if steps_to_run:
            self.log("Upgrading profile %r to %r" %
                     (profile_id, steps_to_run[0]['sdest']))
        for info in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, info['id'])
            if step is not None:
                msg = 'profile {0} from {ssource} to {sdest}: {title}'.format(
                    profile_id, **info)
                self.log("Running upgrade step for {0}.".format(msg))
                step.doStep(self.setup)
                self.log("Finished upgrade step for {0}.".format(msg))

        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            self.setup.setLastVersionForProfile(profile_id, step.dest)
        else:
            raise ValueError(
                'Upgrade steps %r finished for profile %r '
                'but no new version %r recorded.' %
                (steps_to_run, profile_id, '.'.join(step.dest)))

        self.commit("Upgraded profile %r to %r" %
                    (profile_id, '.'.join(step.dest)))
Example #12
0
def install(portal, reinstall=False):
    """ (Re)Install this product.

        This external method is need, because portal_quickinstaller doens't
        know what GenericProfile profile to apply when reinstalling a product.
    """
    setup_tool = getToolByName(portal, 'portal_setup')
    if reinstall:
        step = None
        profile_id = 'quintagroup.seoptimizer:default'
        steps_to_run = [s['id'] for s in \
                        setup_tool.listUpgrades(profile_id, show_old=False)]
        for step_id in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
            step.doStep(setup_tool)
            msg = "Ran upgrade step %s for profile %s" \
                  % (step.title, profile_id)
            logger.log(logging.INFO, msg)
        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            setup_tool.setLastVersionForProfile(profile_id, step.dest)
        return "Ran all reinstall steps."
    else:
        setup_tool.runAllImportStepsFromProfile(INSTALL)
        return "Ran all install steps."
Example #13
0
    def manage_doUpgrades(self, request=None):
        """Perform all selected upgrade steps.
        """
        if request is None:
            request = self.REQUEST
        logger = logging.getLogger('GenericSetup')
        steps_to_run = request.form.get('upgrades', [])
        profile_id = request.get('profile_id', '')
        step = None
        for step_id in steps_to_run:
            step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
            if step is not None:
                step.doStep(self)
                msg = "Ran upgrade step %s for profile %s" % (step.title,
                                                              profile_id)
                logger.log(logging.INFO, msg)

        # We update the profile version to the last one we have reached
        # with running an upgrade step.
        if step and step.dest is not None and step.checker is None:
            self.setLastVersionForProfile(profile_id, step.dest)

        url = self.absolute_url()
        request.RESPONSE.redirect("%s/manage_upgrades?saved=%s"
                                    % (url, profile_id))
Example #14
0
def to42final_cmfeditions_registry_bases(context):
    """install the component registry bases modifier."""
    # for portals upgraded from older versions, the cmfeditions
    # profile isn't installed and so has no installed version number.
    # this applies a necessary upgrade step but also establishes a
    # version for the profile
    setup = getToolByName(context, 'portal_setup')

    # Copied from Products.GenericSetup.tool.SetupTool.manage_doUpgrades
    logger = logging.getLogger('GenericSetup')
    steps_to_run = ['36634937']
    profile_id = 'Products.CMFEditions:CMFEditions'
    step = None
    for step_id in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
        if step is not None:
            step.doStep(setup)
            msg = "Ran upgrade step %s for profile %s" % (step.title,
                                                          profile_id)
            logger.log(logging.INFO, msg)

    # We update the profile version to the last one we have reached
    # with running an upgrade step.
    if step and step.dest is not None and step.checker is None:
        setup.setLastVersionForProfile(profile_id, step.dest)
 def run_migration_step(self):
     import transaction
     transaction.savepoint()
     # Now run the migration step
     profile_id = "collective.lineage:default"
     setup_tool = self.layer['portal'].portal_setup
     steps_to_run = _upgrade_registry.getUpgradeStepsForProfile(profile_id)
     for step_id in steps_to_run:
         step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
         if step is not None:
             if step.title == "Migrate the Child Folder objects":
                 step.doStep(setup_tool)
Example #16
0
    def _do_upgrade(self, profileid, upgradeid):
        step = _upgrade_registry.getUpgradeStep(profileid, upgradeid)
        step.doStep(self.portal_setup)

        msg = "Ran upgrade step %s for profile %s" % (step.title, profileid)
        logger.log(logging.INFO, msg)

        transaction_note = '%s -> %s (%s)' % (step.profile, '.'.join(
            step.dest), step.title)
        transaction.get().note(transaction_note)

        return step.dest
Example #17
0
    def _do_upgrade(self, profileid, upgradeid):
        step = _upgrade_registry.getUpgradeStep(profileid, upgradeid)
        step.doStep(self.portal_setup)

        msg = "Ran upgrade step %s for profile %s" % (
            step.title, profileid)
        logger.log(logging.INFO, msg)

        transaction_note = '%s -> %s (%s)' % (
            step.profile, '.'.join(step.dest), step.title)
        transaction.get().note(transaction_note)

        return step.dest
Example #18
0
def runUpgradeSteps(profile_id):
    """run the upgrade steps for the given profile_id in the form of:

    profile-<package_name>:<profile_name>

    example:

    profile-my.package:default

    Basically this is the code from GS.tool.manage_doUpgrades() in step
    form.  Had to extract the code because it was doing a redirect back to the
    upgrades form in the GS tool.
    """
    portal = api.portal.get()
    setup_tool = getToolByName(portal, 'portal_setup')
    logger = logging.getLogger(__name__)
    logger.info('****** runUpgradeSteps BEGIN ******')
    upgrade_steps = setup_tool.listUpgrades(profile_id)
    steps_to_run = []
    for step in upgrade_steps:
        if isinstance(step, list):
            # this is a group of steps
            for new_step in step:
                steps_to_run.append(new_step['step'].id)
        else:
            steps_to_run.append(step['step'].id)

    #################
    # from GS tool...
    ##################
    for step_id in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
        if step is not None:
            step.doStep(setup_tool)
            msg = "Ran upgrade step %s for profile %s" % (step.title,
                                                          profile_id)
            logger.info(msg)

    # XXX should be a bit smarter about deciding when to up the
    #     profile version
    profile_info = _profile_registry.getProfileInfo(profile_id)
    version = profile_info.get('version', None)
    if version is not None:
        setup_tool.setLastVersionForProfile(profile_id, version)

    logger.info('****** runUpgradeSteps END ******')
Example #19
0
def runUpgradeSteps(profile_id):
    """run the upgrade steps for the given profile_id in the form of:

    profile-<package_name>:<profile_name>

    example:

    profile-my.package:default

    Basically this is the code from GS.tool.manage_doUpgrades() in step
    form.  Had to extract the code because it was doing a redirect back to the
    upgrades form in the GS tool.
    """
    portal = api.portal.get()
    setup_tool = getToolByName(portal, 'portal_setup')
    logger = logging.getLogger(__name__)
    logger.info('****** runUpgradeSteps BEGIN ******')
    upgrade_steps = setup_tool.listUpgrades(profile_id)
    steps_to_run = []
    for step in upgrade_steps:
        if isinstance(step, list):
            # this is a group of steps
            for new_step in step:
                steps_to_run.append(new_step['step'].id)
        else:
            steps_to_run.append(step['step'].id)

    #################
    # from GS tool...
    ##################
    for step_id in steps_to_run:
        step = _upgrade_registry.getUpgradeStep(profile_id, step_id)
        if step is not None:
            step.doStep(setup_tool)
            msg = "Ran upgrade step %s for profile %s" % (step.title,
                                                          profile_id)
            logger.info(msg)

    # XXX should be a bit smarter about deciding when to up the
    #     profile version
    profile_info = _profile_registry.getProfileInfo(profile_id)
    version = profile_info.get('version', None)
    if version is not None:
        setup_tool.setLastVersionForProfile(profile_id, version)

    logger.info('****** runUpgradeSteps END ******')
Example #20
0
    def _do_upgrade(self, profileid, upgradeid):
        start = time.time()

        step = _upgrade_registry.getUpgradeStep(profileid, upgradeid)
        logger.log(logging.INFO, '_' * 70)
        logger.log(logging.INFO, 'UPGRADE STEP %s: %s' % (
                profileid, step.title))

        step.doStep(self.portal_setup)
        TransactionNote().add_upgrade(profileid, step.dest, step.title)

        msg = "Ran upgrade step %s for profile %s" % (
            step.title, profileid)
        logger.log(logging.INFO, msg)

        logger.log(logging.INFO, 'Upgrade step duration: %s' % format_duration(
                time.time() - start))

        return step.dest
Example #21
0
    def _do_upgrade(self, profileid, upgradeid):
        start = time.time()

        step = _upgrade_registry.getUpgradeStep(profileid, upgradeid)
        logger.log(logging.INFO, '_' * 70)
        logger.log(logging.INFO,
                   'UPGRADE STEP %s: %s' % (profileid, step.title))

        step.doStep(self.portal_setup)
        TransactionNote().add_upgrade(profileid, step.dest, step.title)

        msg = "Ran upgrade step %s for profile %s" % (step.title, profileid)
        logger.log(logging.INFO, msg)

        logger.log(
            logging.INFO,
            'Upgrade step duration: %s' % format_duration(time.time() - start))

        return step.dest
Example #22
0
 def getUpgradeStep(self, sortkey):
     upgrades = self.setup.listUpgrades(self.profile, show_old=True)
     upgrade_id = upgrades[sortkey - 1]["id"]
     step = _upgrade_registry.getUpgradeStep(self.profile, upgrade_id)
     return step