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."
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)
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)
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)
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)
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)))
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))
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 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 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."
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))
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)
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
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
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 ******')
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 ******')
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
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
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