Example #1
0
def find_start_version(profile):
    upgrades = list(_upgrade_registry.getUpgradeStepsForProfile(profile).values())
    upgrades.sort(key=attrgetter('dest'))
    if len(upgrades) > 0:
        return upgrades[-1].dest
    else:
        return str(10 ** 13)
Example #2
0
 def beforeTearDown(self):
     # Remove the extra step from the upgrade registry,
     # otherwise this bleeds over into other tests.
     from Products.GenericSetup.upgrade import _upgrade_registry
     profile_steps = _upgrade_registry.getUpgradeStepsForProfile(
         _DEFAULT_PROFILE)
     profile_steps.pop(self.step_id, None)
Example #3
0
def find_start_version(profile):
    upgrades = _upgrade_registry.getUpgradeStepsForProfile(profile).values()
    upgrades = sorted(upgrades, key=attrgetter('dest'))
    if len(upgrades) > 0:
        return upgrades[-1].dest
    else:
        return str(10 ** 13)
    def _upgrade_add_on(
        self,
        source,
        destination,
        add_on_name='collective.logbook',
        profile='default'
    ):
        u"""Run the upgrade steps for an add-on.

        Arguments:
        add_on_name -- Add-on name. Eg.: "my.package".
        profile -- Generic Setup profile. Eg.: "default".
        source -- Source version (string). Eg.: "1".
        destination -- Destination version (string). Eg.: "2".

        Return: boolean which is true if and only if at least one upgrade step
                ran.
        """
        setup = api.portal.get_tool('portal_setup')
        full_profile_id = u'{}:{}'.format(add_on_name, profile)
        ran = False
        groups = _upgrade_registry.getUpgradeStepsForProfile(full_profile_id)
        for step_or_steps in groups.values():
            try:
                steps = sorted([s[1] for s in step_or_steps], key=lambda x: x.sortkey)
            except TypeError:
                steps = [step_or_steps]
            for step in steps:
                if (source in step.source) and (destination in step.dest):
                    step.doStep(setup)
                    ran = True

        return ran
 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 #6
0
 def testUpgradeCallOnReinstall(self):
     # Get upgrade steps
     upgrades = _upgrade_registry.getUpgradeStepsForProfile(self.profile)
     upgrades = dict([(u.sortkey, u) for u in upgrades.values()])
     try:
         # Replace original handlers with patched ones for test calls
         called = []
         upgrades[1].handler = lambda st:called.append("1.0 to 1.1")
         upgrades[2].handler = lambda st:called.append("1.1 to 1.2")
         # Run reinstallation
         self.portal.portal_quickinstaller.reinstallProducts(products=config.PROJECTNAME)
         # Test upgrades call
         self.assertEqual("1.0 to 1.1" in called, True)
         self.assertEqual("1.1 to 1.2" in called, True)
     finally:
         # Restore original upgrade handlers
         upgrades[1].handler = gsm_upgrades.upgrade_1_0_to_1_1
         upgrades[2].handler = gsm_upgrades.upgrade_1_1_to_1_2
Example #7
0
def find_start_version(profile):
    upgrades = _upgrade_registry.getUpgradeStepsForProfile(profile).values()
    dests = set()

    for upgrade in upgrades:
        if isinstance(upgrade, list):
            # Those are combined upgrade steps
            # (registered with the upgradeSteps directive)
            [
                dests.update(partial_upgrade[1].dest)
                for partial_upgrade in upgrade
            ]
        else:
            # Those are simple upgrade steps
            # (registered with the upgradeStep directive)
            dests.update(upgrade.dest)

    if dests:
        return max(dests)
    else:
        return str(10**13)