def test_records_removed_on_uninstall(self): qi = get_installer(self.portal, self.request) with api.env.adopt_roles(['Manager']): qi.uninstall_product(PROJECTNAME) records = [ ISocialLikeSettings.__identifier__ + '.enabled_portal_types', ISocialLikeSettings.__identifier__ + '.plugins_enabled', ISocialLikeSettings.__identifier__ + '.validation_enabled', ISocialLikeSettings.__identifier__ + '.typebutton', ISocialLikeSettings.__identifier__ + '.do_not_track', ISocialLikeSettings.__identifier__ + '.canonical_domain', ISocialLikeSettings.__identifier__ + '.fallback_image', ISocialLikeSettings.__identifier__ + '.fbaction', ISocialLikeSettings.__identifier__ + '.facebook_username', ISocialLikeSettings.__identifier__ + '.facebook_app_id', ISocialLikeSettings.__identifier__ + '.fbbuttons', ISocialLikeSettings.__identifier__ + '.fbshowlikes', ISocialLikeSettings.__identifier__ + '.twitter_username', ISocialLikeSettings.__identifier__ + '.facebook_prefetch_enabled', ] for r in records: self.assertNotIn(r, self.registry)
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer['portal'] if get_installer: self.installer = get_installer(self.portal, self.layer['request']) else: self.installer = api.portal.get_tool('portal_quickinstaller')
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer["portal"] if get_installer: self.installer = get_installer(self.portal, self.layer["request"]) else: self.installer = plone.api.portal.get_tool("portal_quickinstaller")
def setupEnvironment(self, out, types, package_name, globals=types_globals, product_skins_dir='skins', require_dependencies=True, install_deps=1): if install_deps: if require_dependencies: # Import here so it does not break when you manage to # get a too old CMFPlone with a too new Archetypes. from Products.CMFPlone.utils import get_installer qi = get_installer(self) if not qi.is_product_installed('Products.CMFFormController'): qi.install_product('Products.CMFFormController', locked=1) print >>out, 'Installing CMFFormController' if not qi.is_product_installed('Products.MimetypesRegistry'): qi.install_product('Products.MimetypesRegistry') print >>out, 'Installing MimetypesRegistry' if not qi.is_product_installed('Products.PortalTransforms'): qi.install_product('Products.PortalTransforms') print >>out, 'Installing PortalTransforms' if not qi.is_product_installed('Archetypes'): qi.install_product('Products.Archetypes') print >>out, 'Installing Archetypes' if product_skins_dir: install_subskin(self, out, globals, product_skins_dir) install_additional_templates(self, out, types) ftypes = filterTypes(self, out, types, package_name) install_indexes(self, out, ftypes) install_actions(self, out, ftypes)
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer["portal"] if get_installer: self.installer = get_installer(self.portal, self.layer["request"]) else: self.installer = api.portal.get_tool("portal_quickinstaller")
def to52beta1(context): # fake the old ResourceRegistries interface: fake_mods = FAKE_RR_PATH.split('.')[:-1] parent = sys.modules[fake_mods[0]] for idx in range(1, len(fake_mods)): mod_name = '.'.join(fake_mods[:idx + 1]) mod_inst = ModuleType(mod_name) if parent: setattr(parent, fake_mods[idx], mod_inst) sys.modules[mod_name] = parent = mod_inst sys.modules[FAKE_RR_PATH] = IResourceRegistriesSettings setattr(parent, 'IResourceRegistriesSettings', IResourceRegistriesSettings) sys.modules[FAKE_RR_PATH] loadMigrationProfile(context, 'profile-plone.app.upgrade.v52:to52beta1') for idx in range(1, len(fake_mods)): mod_name = '.'.join(fake_mods[:idx + 1]) del sys.modules[mod_name] del sys.modules[FAKE_RR_PATH] delattr(sys.modules[fake_mods[0]], fake_mods[1]) add_exclude_from_nav_index(context) remove_legacy_resource_registries(context) remove_interface_indexes_from_relations_catalog() # Make sure plone.staticresources is installed from Products.CMFPlone.utils import get_installer qi = get_installer(context) if not qi.is_product_installed('plone.staticresources'): qi.install_product('plone.staticresources')
def to52rc1(context): loadMigrationProfile(context, 'profile-plone.app.upgrade.v52:to52rc1') # Make sure plone.staticresources is installed from Products.CMFPlone.utils import get_installer qi = get_installer(context) if not qi.is_product_installed('plone.staticresources'): qi.install_product('plone.staticresources')
def setUp(self): self.portal = self.layer['portal'] roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer = get_installer(self.portal) self.installer.uninstall_product('ims.fieldupdater') setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer['portal'] if HAS_INSTALLER: self.installer = get_installer(self.portal) else: self.installer = api.portal.get_tool('portal_quickinstaller')
def setUp(self): self.portal = self.layer['portal'] roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer = get_installer(self.portal) self.installer.uninstall_product('plone.app.multilingual') setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): super(TestDexterityRelatedItemsViewlet, self).setUp() """ create some sample content to test with """ from Products.CMFPlone.utils import get_installer setRoles(self.portal, TEST_USER_ID, ['Manager']) fti = DexterityFTI('Dexterity Item with relatedItems behavior') self.portal.portal_types._setObject( 'Dexterity Item with relatedItems behavior', fti) fti.klass = 'plone.dexterity.content.Item' test_module = 'plone.app.layout.viewlets.tests.test_content' fti.schema = test_module + '.IMyDexterityItem' fti.behaviors = ('plone.app.relationfield.behavior.IRelatedItems',) fti = DexterityFTI('Dexterity Item without relatedItems behavior') self.portal.portal_types._setObject( 'Dexterity Item without relatedItems behavior', fti) fti.klass = 'plone.dexterity.content.Item' fti.schema = test_module + '.IMyDexterityItem' self.folder.invokeFactory('Document', 'doc1', title='Document 1') self.folder.invokeFactory('Document', 'doc2', title='Document 2') self.folder.invokeFactory( 'Dexterity Item with relatedItems behavior', 'dex1') self.folder.invokeFactory( 'Dexterity Item with relatedItems behavior', 'dex2') self.folder.invokeFactory( 'Dexterity Item without relatedItems behavior', 'dex3') qi = get_installer(self.portal) qi.install_product('plone.app.intid') intids = getUtility(IIntIds) self.folder.dex1.relatedItems = [ RelationValue(intids.getId(self.folder.doc1)), RelationValue(intids.getId(self.folder.doc2)), ]
def setUp(self): self.portal = self.layer['portal'] self.installer = get_installer(self.portal, self.layer['request']) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer.uninstall_product('collective.behavior.altimage') setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer['portal'] if get_installer: self.installer = get_installer(self.portal, self.layer['request']) else: self.installer = api.portal.get_tool('portal_quickinstaller') self.installer.uninstallProducts(['rer.externalnews'])
def setUp(self): self.portal = self.layer["portal"] self.installer = get_installer(self.portal, self.layer["request"]) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.installer.uninstallProducts(["kitconcept.voltoformbuilder"]) setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer["portal"] if get_installer: self.installer = get_installer(self.portal, self.layer["request"]) else: self.installer = api.portal.get_tool("portal_quickinstaller") self.installer.uninstallProducts(["kitconcept.seo"])
def setUp(self): self.portal = self.layer["portal"] self.installer = get_installer(self.portal, self.layer["request"]) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.installer.uninstall_product("Products.PloneKeywordManager") setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer['portal'] if get_installer is None: self.installer = self.portal['portal_quickinstaller'] else: self.installer = get_installer(self.portal)
def setUp(self): self.portal = self.layer["portal"] self.installer = get_installer(self.portal, self.layer["request"]) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.installer.uninstallProducts(["collective.elastic.plone"]) setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer['portal'] if get_installer: self.installer = get_installer(self.portal, self.layer['request']) else: self.installer = api.portal.get_tool('portal_quickinstaller') self.installer.uninstallProducts(['kitconcept.dsgvo'])
def setUp(self): self.portal = self.layer["portal"] self.installer = get_installer(self.portal, self.layer["request"]) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.installer.uninstall_product("collective.immediatecreate") setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer['portal'] if has_get_installer: self.installer = get_installer(self.portal, self.layer['request']) else: self.installer = api.portal.get_tool('portal_quickinstaller')
def setUp(self): self.portal = self.layer['portal'] if get_installer is None: self.qi = self.portal['portal_quickinstaller'] else: self.qi = get_installer(self.portal) self.qi.uninstallProducts(products=[PROJECTNAME])
def setUp(self): """Additional test setup.""" self.portal = self.layer['portal'] if get_installer is not None: self.installer = get_installer(self.portal) else: self.installer = self.portal.portal_quickinstaller
def setUp(self): self.portal = self.layer['portal'] self.installer = get_installer(self.portal, self.layer['request']) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer.uninstall_product('edi.course') setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer["portal"] if not HAS_PLONE_5_AND_MORE: self.installer = api.portal.get_tool("portal_quickinstaller") else: self.installer = get_installer(self.portal, self.layer["request"])
def setUp(self): self.portal = self.layer["portal"] self.installer = get_installer(self.portal, self.layer["request"]) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.installer.uninstall_product("ideabox.restapi") setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.app = self.layer["app"] self.portal = self.layer["portal"] qi = get_installer(self.portal) qi.uninstall_product(PROJECT_NAME) self.installed = qi.is_product_installed(PROJECT_NAME)
def test_product_is_installed(self): """Validate that our products GS profile has been run and the product installed """ qi = get_installer(self.portal) installed = qi.is_product_installed(PROJECT_NAME) self.assertTrue(installed, "package appears not to have been installed")
def setUp(self): self.portal = self.layer['portal'] if get_installer is None: self.installer = api.portal.get_tool('portal_quickinstaller') else: self.installer = get_installer(self.portal) self.registry = getUtility(IRegistry) self.settings = self.registry.forInterface(ISettings)
def setUp(self): self.portal = self.layer['portal'] self.controlpanel = self.portal['portal_controlpanel'] if get_installer is None: self.installer = api.portal.get_tool('portal_quickinstaller') else: self.installer = get_installer(self.portal) setRoles(self.portal, TEST_USER_ID, ['Manager'])
def test_is_installed(self): # Test, if the Product is listed as installed. For Plone < 5 # it shouldn't (since it's a core dependency), for Plone >= 5 it should # (where plone.app.contenttypes is installed by default instead). # Only Plone 5.1 is supported here. from Products.CMFPlone.utils import get_installer qi = get_installer(self.portal) self.assertTrue(qi.is_product_installed('Products.ATContentTypes'))
def setUp(self): self.portal = self.layer['portal'] self.request = self.layer['request'] self.installer = get_installer(self.portal, self.request) roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer.uninstall_product('collective.ploneboard') setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer["portal"] if HAS_INSTALLER: self.installer = get_installer(self.portal) self.installer.uninstall_product("collective.faq") else: self.installer = api.portal.get_tool("portal_quickinstaller") self.installer.uninstallProducts(["collective.faq"])
def test_site_creation_without_content_but_with_dexterity(self): """Test site creation without example content have dexterity installed.""" ploneSite = addPloneSite(self.app, 'ploneFoo', title='Foo', setup_content=False) qi = get_installer(ploneSite, self.request) self.assertTrue(qi.is_product_installed('plone.app.dexterity'))
def setUp(self): self.portal = self.layer["portal"] if HAS_INSTALLER: self.installer = get_installer(self.portal) self.installer.uninstall_product("kitconcept.timeline") else: self.installer = api.portal.get_tool("portal_quickinstaller") self.installer.uninstallProducts(["kitconcept.timeline"])
def setUp(self): self.portal = self.layer['portal'] if HAS_INSTALLER: self.installer = get_installer(self.portal) self.installer.uninstall_product('collective.getfeed') else: self.installer = api.portal.get_tool('portal_quickinstaller') self.installer.uninstallProducts(['collective.getfeed'])
def setUp(self): self.portal = self.layer["portal"] self.installer = get_installer(self.portal) roles_before = api.user.get_roles(username=TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.assertTrue( self.installer.uninstall_product("collective.contentgroups")) setRoles(self.portal, TEST_USER_ID, roles_before)
def setupSecurityContext(self, ): # Create a few members self.user1 = self.createMember('user1', 'abcd4', '*****@*****.**') self.user2 = self.createMember('user2', 'abcd4', '*****@*****.**') self.user3 = self.createMember('user3', 'abcd4', '*****@*****.**') self.folder = self.portal.portal_membership.getHomeFolder('user1') self.qi = get_installer(self.portal) self.qi.install_product('CMFPlacefulWorkflow')
def setUp(self): self.portal = self.layer["portal"] if get_installer: self.installer = get_installer(self.portal, self.layer["request"]) else: self.installer = api.portal.get_tool("portal_quickinstaller") roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ["Manager"]) self.installer.uninstallProducts(["slc.xliff"]) setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer['portal'] if get_installer: self.installer = get_installer(self.portal, self.layer['request']) else: self.installer = api.portal.get_tool('portal_quickinstaller') roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer.uninstallProducts(['plone.formwidget.recaptcha']) setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer['portal'] if has_get_installer: self.installer = get_installer(self.portal, self.layer['request']) else: self.installer = api.portal.get_tool('portal_quickinstaller') roles_before = api.user.get_roles(TEST_USER_ID) setRoles(self.portal, TEST_USER_ID, ['Manager']) self.installer.uninstallProducts(['collective.behavior.banner']) setRoles(self.portal, TEST_USER_ID, roles_before)
def setUp(self): self.portal = self.layer['portal'] if get_installer: self.qi = get_installer(self.portal, self.layer['request']) else: self.qi = api.portal.get_tool('portal_quickinstaller') self.qi.uninstallProducts(products=[PROJECTNAME]) from plone.registry.interfaces import IRegistry from zope.component import getUtility self.registry = getUtility(IRegistry)
def uninstall(self): if IS_BBB: qi = self.portal['portal_quickinstaller'] with api.env.adopt_roles(['Manager']): qi.uninstallProducts([PROJECTNAME]) else: from Products.CMFPlone.utils import get_installer qi = get_installer(self.portal, self.request) with api.env.adopt_roles(['Manager']): qi.uninstall_product(PROJECTNAME) return qi
def afterSetUp(self): self.cat = getattr(self.portal.aq_explicit, 'portal_catalog') from Products.CMFPlone.utils import get_installer qi = get_installer(self.portal) qi.uninstall_product('Products.ATContentTypes') # It looks like the hiddenprofile utility from CMFPlone is not loaded # in these tests. So our default profile is installed, instead of only # our base profile. This explains why our portal_types are available # at all. This means we need to manually apply the fullinstall # profile. self.portal.portal_setup.runAllImportStepsFromProfile( 'Products.ATContentTypes:fulluninstall')
def uninstallProduct(self, product_name): # Removes a product try: from Products.CMFPlone.utils import get_installer except ImportError: # BBB For Plone 5.0 and lower. qi = getToolByName(self.portal, 'portal_quickinstaller', None) if qi is None: return else: qi = get_installer(self.portal) if qi.isProductInstalled(product_name): qi.uninstallProducts([product_name])
def testPolicyIncludedIfCMFPWIsInstalled(self): actions = self.menu.getMenuItems(self.folder.doc1, self.request) url = self.folder.doc1.absolute_url()\ + '/placeful_workflow_configuration' self.assertFalse(url in [a['action'] for a in actions]) qi = get_installer(self.portal) qi.install_product('Products.CMFPlacefulWorkflow') # item needs permission logout() actions = self.menu.getMenuItems(self.folder.doc1, self.request) self.assertNotIn(url, [a['action'] for a in actions]) actions = self.menu.getMenuItems(self.folder.doc1, self.request) self.assertNotIn(url, [a['action'] for a in actions])
def profileImportedEventHandler(event): """ When a profile is imported with the keyword "latest", it needs to be reconfigured with the actual number. """ profile_id = event.profile_id if profile_id is None: return profile_id = profile_id.replace('profile-', '') gs = event.tool installed_version = gs.getLastVersionForProfile(profile_id) if installed_version == (u'latest',): qi = get_installer(gs, gs.REQUEST) actual_version = qi.get_latest_upgrade_step(profile_id) gs.setLastVersionForProfile(profile_id, actual_version)
def afterSetUp(self): self.loginAsPortalOwner() from Products.CMFPlone.utils import get_installer qi = get_installer(self.portal) qi.uninstall_product("Products.ATContentTypes") portal_setup = self.portal.portal_setup # It looks like the hiddenprofile utility from CMFPlone is not loaded # in these tests. So our default profile is installed, instead of only # our base profile. This explains why our portal_types are available # at all. This means we need to manually apply the fullinstall # profile. portal_setup.runAllImportStepsFromProfile("Products.ATContentTypes:fulluninstall") # Now we apply the base profile. portal_setup.runAllImportStepsFromProfile("profile-Products.ATContentTypes:base")
def product_is_activated(self, product_name): """Assert that given product_name is activated (installed) in the add-ons control panel. """ portal = getSite() if get_installer is None: qi = getToolByName(portal, 'portal_quickinstaller') installed = qi.isProductInstalled(product_name) else: qi = get_installer(portal) installed = qi.is_product_installed(product_name) portal_setup = getToolByName(portal, 'portal_setup') imported = portal_setup.getProfileImportDate( 'profile-{0}:default'.format(product_name)) assert installed or imported,\ u"Product '{0}' was not activated.".format(product_name)
def threeX_alpha1(context): """3.x -> 4.0alpha1 """ try: import plone.app.jquerytools # noqa loadMigrationProfile(context, 'profile-plone.app.jquerytools:default') except ImportError: pass loadMigrationProfile(context, 'profile-plone.app.upgrade.v40:3-4alpha1') loadMigrationProfile( context, 'profile-Products.CMFPlone:dependencies', steps=('controlpanel',)) try: loadMigrationProfile( context, 'profile-Products.CMFPlone:dependencies', steps=('jsregistry',)) except ValueError as err: # portal_javascripts is replaced by new resource registry pass # Install plonetheme.classic profile # (if, installed, it will be removed in Plone 5) qi = getToolByName(context, 'portal_quickinstaller', None) stool = getToolByName(context, 'portal_setup') if qi is not None: if 'plonetheme.classic' in qi: stool.runAllImportStepsFromProfile( 'profile-plonetheme.classic:default', ) else: # Plone 5.1 and higher. from Products.CMFPlone.utils import get_installer qi = get_installer(context) # It needs to be reinstalled. Probably this actually does nothing on # Plone 5, which is fine, but we will try it anyway. if qi.is_product_installed('plonetheme.classic'): stool.runAllImportStepsFromProfile( 'profile-plonetheme.classic:default', ) # Install packages that are needed for Plone 4, # but don't break on Plone 5 where they are gone for profile in ('archetypes.referencebrowserwidget:default', 'plonetheme.sunburst:default', 'Products.TinyMCE:TinyMCE'): try: stool.runAllImportStepsFromProfile('profile-' + profile) except KeyError: pass
def reinstallArchetypes(portal, out): """let's quickinstaller (re)install Archetypes and it's dependencies """ # Import here so it does not break when you manage to # get a too old CMFPlone with a too new Archetypes. from Products.CMFPlone.utils import get_installer qi = get_installer(portal) products = ('MimetypesRegistry', 'PortalTransforms', 'Archetypes', ) print >>out, 'Reinstalling Archetypes and it\'s dependencies' for product in products: full_product = 'Products.{0}'.format(product) if qi.is_product_installed(full_product): qi.uninstall_product(full_product) print >>out, '... uninstalling %s' % full_product qi.install_product(full_product) print >>out, '... installing %s' % full_product print >>out, 'Done\n'
def installOrReinstallProduct(portal, product_name, out=None, hidden=False): """Installs a product If product is already installed test if it needs to be reinstalled. Also fix skins after reinstalling """ try: from Products.CMFPlone.utils import get_installer except ImportError: # BBB For Plone 5.0 and lower. qi = getToolByName(portal, 'portal_quickinstaller', None) if qi is None: return old_qi = True else: qi = get_installer(portal) old_qi = False if old_qi: if not qi.isProductInstalled(product_name): qi.installProduct(product_name, hidden=hidden) logger.info('Installed %s', product_name) elif old_qi: info = qi._getOb(product_name) installed_version = info.getInstalledVersion() product_version = qi.getProductVersion(product_name) if installed_version != product_version: qi.reinstallProducts([product_name]) logger.info( '%s is out of date (installed: %s/ filesystem: %s), ' 'reinstalled.', product_name, installed_version, product_version) else: logger.info('%s already installed.', product_name) else: # New QI browser view. if not qi.is_product_installed(product_name): qi.install_product(product_name, allow_hidden=True) logger.info('Installed %s', product_name) else: qi.upgrade_product(product_name) logger.info('Upgraded %s', product_name) # Refresh skins portal.clearCurrentSkin() if getattr(portal, 'REQUEST', None): portal.setupCurrentSkin(portal.REQUEST)
def quickInstallProduct(portal, productName, reinstall=False): """Install a product using the ``portal_quickinstaller`` tool. If ``reinstall`` is false and the product is already installed, do nothing. If ``reinstall`` is true, perform an explicit reinstall if the product is installed already. """ from Acquisition import aq_parent from AccessControl import getSecurityManager from AccessControl.SecurityManagement import setSecurityManager sm = getSecurityManager() app = aq_parent(portal) z2.login(app['acl_users'], SITE_OWNER_NAME) try: from Products.CMFPlone.utils import get_installer except ImportError: # BBB For Plone 5.0 and lower. qi = portal['portal_quickinstaller'] old_qi = True else: qi = get_installer(portal) old_qi = False try: if old_qi: if not qi.isProductInstalled(productName): qi.installProduct(productName) elif reinstall: qi.reinstallProducts([productName]) else: if not qi.is_product_installed(productName): qi.install_product(productName, allow_hidden=True) elif reinstall: qi.uninstall_product(productName) qi.install_product(productName, allow_hidden=True) portal.clearCurrentSkin() portal.setupCurrentSkin(portal.REQUEST) finally: setSecurityManager(sm)
def remove_duplicate_iterate_settings(context): """When migrating from Plone 5 to 5.1 there might be duplicate settings for plone.app.iterate in the registry. One with the prefix 'plone' and one without. See https://github.com/plone/plone.app.iterate/pull/47 """ registry = getUtility(IRegistry) from plone.app.iterate.interfaces import IIterateSettings try: if 'plone.checkout_workflow_policy' in registry.records: del registry.records['plone.checkout_workflow_policy'] if 'plone.enable_checkout_workflow' in registry.records: del registry.records['plone.enable_checkout_workflow'] except KeyError: pass # Make sure the correct settings are actually initialized from Products.CMFPlone.utils import get_installer qi = get_installer(context) if qi.is_product_installed('plone.app.iterate'): registry.registerInterface(IIterateSettings)
def installation(self, productName, uninstall=False, reinstall=False): assert not (uninstall and reinstall) try: from Products.CMFPlone.utils import get_installer except ImportError: # Plone 5.0 self.qi = self.portal.portal_quickinstaller if uninstall: self.qi.uninstallProducts([productName]) elif reinstall: self.qi.installProduct(productName, reinstall=True) else: self.qi.installProduct(productName) else: self.qi = get_installer(self.portal) if uninstall: self.qi.uninstall_product(productName) elif reinstall: self.qi.uninstall_product(productName) self.qi.install_product(productName) else: self.qi.install_product(productName)
def to50alpha1(context): """4.3 -> 5.0alpha1""" loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50alpha1') portal = getToolByName(context, 'portal_url').getPortalObject() # remove obsolete tools tools = [t for t in TOOLS_TO_REMOVE if t in portal] if tools: portal.manage_delObjects(tools) cleanUpToolRegistry(context) # migrate properties to portal_registry migrate_registry_settings(portal) # install plone.app.event try: from Products.CMFPlone.utils import get_installer except ImportError: # BBB For Plone 5.0 and lower. qi = getToolByName(portal, 'portal_quickinstaller') else: qi = get_installer(portal) if not qi.isProductInstalled('plone.resource'): qi.installProduct('plone.resource') if not qi.isProductInstalled('plone.app.event'): qi.installProduct('plone.app.event') # update the default view of the Members folder migrate_members_default_view(portal) # install the Barceloneta theme if portal.portal_skins.getDefaultSkin() == 'Sunburst Theme': if not qi.isProductInstalled('plonetheme.barceloneta'): qi.installProduct('plonetheme.barceloneta') upgrade_keyring(context) installOrUpgradePloneAppTheming(context) installOrUpgradePloneAppCaching(context)