Beispiel #1
0
    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')
Beispiel #3
0
 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")
Beispiel #4
0
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)
Beispiel #5
0
 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")
Beispiel #6
0
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')
Beispiel #7
0
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')
Beispiel #8
0
 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)
Beispiel #11
0
 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)),
     ]
Beispiel #12
0
 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)
Beispiel #13
0
 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)
Beispiel #15
0
 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']
     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)
Beispiel #23
0
 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
Beispiel #25
0
 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')
Beispiel #26
0
 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)
Beispiel #27
0
 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"])
Beispiel #28
0
 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)
Beispiel #29
0
    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)
Beispiel #30
0
 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")
Beispiel #31
0
 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)
Beispiel #32
0
 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)
Beispiel #35
0
 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"])
Beispiel #36
0
 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 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"]
     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"])
Beispiel #39
0
 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.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 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')
Beispiel #43
0
 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)
Beispiel #47
0
 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')
Beispiel #49
0
 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])
Beispiel #51
0
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)
Beispiel #54
0
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
Beispiel #55
0
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'
Beispiel #56
0
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)
Beispiel #57
0
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)
Beispiel #58
0
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)
Beispiel #59
0
 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)
Beispiel #60
0
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)