コード例 #1
0
ファイル: tests.py プロジェクト: Vinsurya/Plone
 def testAddBeta2VersioningPermissionsToNewRoles(self):
     # This upgrade just uses GS to apply the role changes,
     # these permissions will not have been installed previously,
     # so this should be safe
     for p in ['CMFEditions: Apply version control',
               'CMFEditions: Save new version',
               'CMFEditions: Access previous versions',
               'CMFEditions: Revert to previous versions',
               'CMFEditions: Checkout to location']:
         self.portal.manage_permission(p, ['Manager', 'Owner'], True)
     # Test it twice
     for i in range(2):
         loadMigrationProfile(self.portal,
                 'profile-plone.app.upgrade.v30:3.0b1-3.0b2',
                 steps=["rolemap"])
         for p in ['CMFEditions: Apply version control',
                   'CMFEditions: Save new version',
                   'CMFEditions: Access previous versions']:
             self.assertTrue(p in [r['name'] for r in
                                 self.portal.permissionsOfRole('Contributor') if r['selected']])
             self.assertTrue(p in [r['name'] for r in
                                 self.portal.permissionsOfRole('Editor') if r['selected']])
         for p in ['CMFEditions: Revert to previous versions',
                   'CMFEditions: Checkout to location']:
             self.assertTrue(p in [r['name'] for r in
                                 self.portal.permissionsOfRole('Editor') if r['selected']])
コード例 #2
0
ファイル: tests.py プロジェクト: Vinsurya/Plone
 def testInstallRedirectorUtility(self):
     sm = getSiteManager(self.portal)
     sm.unregisterUtility(provided=IRedirectionStorage)
     # Test it twice
     for i in range(2):
         loadMigrationProfile(self.portal, self.profile, ('componentregistry', ))
         self.assertFalse(sm.queryUtility(IRedirectionStorage) is None)
コード例 #3
0
def apply_profile(context):
    ''' Atualiza perfil para versao 1002 '''
    logger = logging.getLogger(PROJECTNAME)
    profile = 'profile-brasil.gov.barra.upgrades.v1002:default'
    loadMigrationProfile(context, profile)
    unregister_old_css(context)
    logger.info('Atualizado para versao 1002')
コード例 #4
0
ファイル: betas.py プロジェクト: plone/plone.app.upgrade
def beta3_beta4(context):
    """4.0beta3 -> 4.0beta4
    """
    loadMigrationProfile(
        context, 'profile-plone.app.upgrade.v40:4beta3-4beta4')

    # Prepare for blob support
    pt = getToolByName(context, 'portal_types')
    for portal_type in ('Image', 'File'):
        fti = pt.get(portal_type)
        if fti and not isinstance(fti, DexterityFTI):
            fti.content_meta_type = 'ATBlob'
            fti.product = 'plone.app.blob'
            fti.factory = 'addATBlob{}'.format(portal_type)

    pprop = getToolByName(context, 'portal_properties')
    site_properties = pprop.site_properties
    if site_properties.hasProperty('typesLinkToFolderContentsInFC'):
        value = site_properties.getProperty('typesLinkToFolderContentsInFC')
        if 'Large Plone Folder' in value:
            value = list(value)
            value.remove('Large Plone Folder')
            value = tuple(value)
            site_properties.typesLinkToFolderContentsInFC = value

    navtree_properties = pprop.navtree_properties
    if navtree_properties.hasProperty('parentMetaTypesNotToQuery'):
        value = navtree_properties.getProperty('parentMetaTypesNotToQuery')
        if 'Large Plone Folder' in value:
            value = list(value)
            value.remove('Large Plone Folder')
            value = tuple(value)
            navtree_properties.parentMetaTypesNotToQuery = value
コード例 #5
0
ファイル: final.py プロジェクト: CGTIC/Plone_SP
def to502(context):
    """5.0.1 -> 5.0.2"""

    # When migrating from Plone 4.3 to 5.0 the profile-version of
    # plone.app.querystring is 13 at this point but the upgrade-step
    # upgrade_to_5 has not been run. Let's run it.
    loadMigrationProfile(context, 'profile-plone.app.querystring:upgrade_to_5')
コード例 #6
0
ファイル: tests.py プロジェクト: gforcada/plone.app.upgrade
 def testAddedUseEmailProperty(self):
     tool = getToolByName(self.portal, 'portal_properties')
     sheet = getattr(tool, 'site_properties')
     #self.assertEqual(sheet.getProperty('use_email_as_login'), False)
     self.removeSiteProperty('use_email_as_login')
     loadMigrationProfile(self.portal, self.profile, ('propertiestool', ))
     self.assertEqual(sheet.getProperty('use_email_as_login'), False)
コード例 #7
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]
    portal.manage_delObjects(tools)

    cleanUpToolRegistry(context)

    # migrate properties to portal_registry
    migrate_registry_settings(portal)

    # install plone.app.event
    qi = getToolByName(portal, 'portal_quickinstaller')
    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)
コード例 #8
0
ファイル: betas.py プロジェクト: pigaov10/plone4.3
def to41rc1(context):
    loadMigrationProfile(context, "profile-plone.app.upgrade.v41:to41rc1")
    optimize_indexes(context)
    # run this again to make sure we respect the blacklist, in an upgrade from
    # Plone < 4 we do the work earlier, so we don't have to iterate twice over
    # the object_provides index
    fix_cataloged_interface_names(context)
コード例 #9
0
def apply_configurations(context):
    """Atualiza perfil para versao 4."""
    logger = logging.getLogger(PROJECTNAME)
    profile = 'profile-interlegis.portalmodelo.policy.upgrades.v4:default'
    loadMigrationProfile(context, profile)
    logger.info('Atualizado para versao 4')

    site = api.portal.getSite()

    SITE_STRUCTURE = [
        dict(
            type='Link',
            title=u'Caderno de Exercícios',
            description=u'Link para o arquivo PDF do Caderno de Exercícios do Portal Modelo 3, utilizado nas oficinas. (este link é apenas uma referência, está privado e pode ser removido)',
            remoteUrl='http://ftp.interlegis.leg.br/interlegis/produtos/portalmodelo/versao3.0/docs/Caderno%20de%20exercicios%20PORTAL%20MODELO%203%C2%AA%20edi%C3%A7%C3%A3o-%20Colab.pdf',
            _transition=None,
        ),
    ]
    SITE_STRUCTURE = _add_id(SITE_STRUCTURE)
    for item in SITE_STRUCTURE:
        id = item['id']
        title = item['title']
        description = item.get('description', u'')
        if id not in site:
            if 'creators' not in item:
                item['creators'] = CREATORS
            obj = api.content.create(site, **item)
            obj.setTitle(title)
            obj.setDescription(description)
            obj.reindexObject()
            logger.debug(u'    {0} criado e publicado'.format(title))
        else:
            logger.debug(u'    pulando {0}; conteúdo existente'.format(title))
コード例 #10
0
ファイル: betas.py プロジェクト: CGTIC/Plone_SP
def to50rc1(context):
    """5.0beta4 -> 5.0rc1"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50rc1')
    portal = getSite()
    # install plone.app.linkintegrity and its dependencies
    qi = getToolByName(portal, 'portal_quickinstaller')
    if not qi.isProductInstalled('plone.app.linkintegrity'):
        qi.installProduct('plone.app.linkintegrity')
    migrate_linkintegrity_relations(portal)

    upgrade_usergroups_controlpanel_settings(context)
    migrate_displayPublicationDateInByline(context)

    # Migrate settings from portal_properties to the configuration registry
    pprop = getToolByName(portal, 'portal_properties')
    site_properties = pprop['site_properties']

    if site_properties.hasProperty('icon_visibility'):
        registry = getUtility(IRegistry)
        settings = registry.forInterface(ISiteSchema, prefix='plone')
        value = site_properties.getProperty('icon_visibility', 'false')
        settings.icon_visiblity = value

    # These have been migrated in previous upgrade steps. Safe to remove.
    properties_to_remove = ['allowAnonymousViewAbout',
                            'available_editors',
                            'default_contenttype',
                            'default_language',
                            'default_editor',
                            'disable_folder_sections',
                            'disable_nonfolderish_sections',
                            'enable_inline_editing',
                            'enable_link_integrity_checks',
                            'enable_livesearch',
                            'enable_sitemap',
                            'enable_wf_state_filtering',
                            'exposeDCMetaTags',
                            'ext_editor',
                            'forbidden_contenttypes',
                            'icon_visibility',
                            'lock_on_ttw_edit',
                            'many_groups',
                            'many_users',
                            'number_of_days_to_keep',
                            'search_collapse_options',
                            'search_enable_batch_size',
                            'search_enable_description_search',
                            'search_review_state_for_anon',
                            'search_enable_sort_on',
                            'search_enable_title_search',
                            'types_not_searched',
                            'use_email_as_login',
                            'use_folder_contents',
                            'use_uuid_as_userid',
                            'user_registration_fields',
                            'visible_ids',
                            'webstats_js']
    for p in properties_to_remove:
        if site_properties.hasProperty(p):
            site_properties._delProperty(p)
コード例 #11
0
ファイル: alphas.py プロジェクト: CGTIC/Plone_SP
def to43alpha1(context):
    """4.2 -> 4.3alpha1"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v43:to43alpha1')
    reindex_sortable_title(context)
    upgradeTinyMCE(context)
    upgradePloneAppTheming(context)
    upgradePloneAppJQuery(context)
コード例 #12
0
def to4100(context, logger=None):
    loadMigrationProfile(context, 'profile-Products.ILOIntranetTypes:to4100')
    catalog = getToolByName(context, 'portal_catalog')
    for brain in catalog({'portal_type': 'ILOEvent'}):
        obj = brain.getObject()
        obj.reindexObject(idxs=['to_remind'])
    return
コード例 #13
0
ファイル: to0002.py プロジェクト: CMcStone/ftw.blog
def upgrade_to_v2(context):
    """Updates profile
    """
    ppcas = 'plone.portlets.contextassignments'
    catalog = getToolByName(context, 'portal_catalog')
    count = 0
    for brain in catalog(portal_type=['BlogEntry', 'BlogCategory', 'Blog']):
        obj = brain.getObject()
        annotations = IAnnotations(obj)
        if ppcas in annotations.keys():
            if 'blog.portlets' in annotations[ppcas]:
                count += 1
                if len(annotations[ppcas]) == 1:
                    del annotations[ppcas]
                else:
                    del annotations[ppcas]['blog.portlets']

    logger.info("%s %s annotations removed" % (str(count), ppcas))
    loadMigrationProfile(context, 'profile-ftw.blog.upgrades:to_v2')

    # remove blog_settings actions
    portal_actions = getToolByName(context, 'portal_actions')

    category = portal_actions.get('object_buttons', None)
    action_id = 'blog_settings'
    if category and action_id in category:
        del category[action_id]
コード例 #14
0
ファイル: tests.py プロジェクト: eaudeweb/plone.app.upgrade
 def testAddSiteAdminToKeywordRoles(self):
     ptool = self.portal.portal_properties
     site_props = ptool.site_properties
     site_props.allowRolesToAddKeywords = ('Manager', 'Reviewer')
     loadMigrationProfile(self.portal, self.profile)
     roles = site_props.allowRolesToAddKeywords
     self.assertEqual(roles, ('Manager', 'Reviewer', 'Site Administrator'))
コード例 #15
0
def threeX_alpha1(context):
    """3.x -> 4.0alpha1
    """
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v40:3-4alpha1')
    loadMigrationProfile(
        context, 'profile-Products.CMFPlone:dependencies',
        steps=('controlpanel', 'jsregistry'))
コード例 #16
0
ファイル: tests.py プロジェクト: gbastien/plone.app.upgrade
 def testRemovePloneCssFromRR(self):
     # Check to ensure that plone.css gets removed from portal_css
     self.css.registerStylesheet('plone.css', media='all')
     self.assertTrue('plone.css' in self.css.getResourceIds())
     loadMigrationProfile(self.portal, self.profile, ('cssregistry', ))
     # plone.css removcal test
     self.assertFalse('plone.css' in self.css.getResourceIds())
コード例 #17
0
def fullname_to_first_and_lastname(context):
    """Migrate subscriber fullname to separate fields."""

    catalog = api.portal.get_tool("portal_catalog")
    subscribers = catalog(portal_type='ENLSubscriber')

    for subscriber in subscribers:
        obj = subscriber.getObject()
        name = ''
        try:
            name = HumanName(obj.fullname)
        except Exception:
            logger.info(
                'No splitting necessary for {0}'.format(obj.getTitle()))
        if name:
            if not obj.getLastname():
                obj.setLastname(name.last)
            if not obj.getFirstname():
                obj.setFirstname(name.first)
            if not obj.getName_prefix():
                obj.setName_prefix(name.title)
            obj.reindexObject()
            logger.info(
                'Splitting fullname to first and lastname for {0}'.format(
                    obj.getTitle()
                )
            )

    loadMigrationProfile(
        context,
        'profile-Products.EasyNewsletter:default'
    )
コード例 #18
0
ファイル: rcs.py プロジェクト: Vinsurya/Plone
def rc2_final(context):
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v30:3.0rc2-3.0final')
    try:
        import plone.app.iterate
    except ImportError:
        pass
    else:
        loadMigrationProfile(context, 'profile-plone.app.upgrade.v30:3.0rc2-3.0final-iterate')
コード例 #19
0
def upgrade_to_1001(context):
    """ reinstall
    """
    # Reinstall
    loadMigrationProfile(
        context,
        'profile-collective.markitup:default'
    )
コード例 #20
0
ファイル: betas.py プロジェクト: CGTIC/Plone_SP
def three1_beta1(portal):
    """3.1.7 -> 3.2beta1
    """
    actions = getToolByName(portal, 'portal_actions')
    if 'iterate_checkin' in actions.object_buttons.objectIds():
        loadMigrationProfile(
            portal,
            'profile-plone.app.upgrade.v32:3.2a1-3.2a2-iterate')
コード例 #21
0
ファイル: tests.py プロジェクト: Vinsurya/Plone
 def testAddEmailCharsetProperty(self):
     if self.portal.hasProperty('email_charset'):
         self.portal.manage_delProperties(['email_charset'])
     # Test it twice
     for i in range(2):
         loadMigrationProfile(self.portal, self.profile, ('properties', ))
         self.assertTrue(self.portal.hasProperty('email_charset'))
         self.assertEqual(self.portal.getProperty('email_charset'), 'utf-8')
コード例 #22
0
def apply_profile(context):
    ''' Atualiza perfil para versao 1013 '''
    logger = logging.getLogger(PROJECTNAME)
    profile = 'profile-brasil.gov.barra.upgrades.v1013:default'
    loadMigrationProfile(context, profile)
    cook_css_resources(context)
    logger.info('CSS resources were cooked')
    logger.info('Atualizado para versao 1013')
コード例 #23
0
ファイル: betas.py プロジェクト: plone/plone.app.upgrade
def to42rc1(context):
    """4.2b2 -> 4.2rc1
    """
    try:
        import plone.app.jquerytools  # noqa F401
        loadMigrationProfile(context, 'profile-plone.app.jquery:default')
    except ImportError:
        pass
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v42:to42rc1')
コード例 #24
0
ファイル: upgrades.py プロジェクト: erral/osha.hwccontent
def migrate_from_pa_event(context):
    loadMigrationProfile(context, 'profile-osha.hwccontent:default')
    # Re-import types to get newest Event type
    context.runImportStepFromProfile(
        'profile-osha.hwccontent:default',
        'typeinfo',
    )
    portal = context.getParentNode()
    migrate(portal, DXEventMigrator)
コード例 #25
0
ファイル: __init__.py プロジェクト: Vinsurya/Plone
def final_two51(context):
    """2.5-final -> 2.5.1
    """
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v25:2.5final-2.5.1')

    # Required for #5569 (is_folderish needs reindexing) and #5231 (all text
    # indices need to be reindexed so they are split properly)
    migtool = getToolByName(context, 'portal_migration')
    migtool._needRecatalog = True
コード例 #26
0
ファイル: alphas.py プロジェクト: gbastien/plone.app.upgrade
def alpha2_beta1(context):
    """ 3.0-alpha2 -> 3.0-beta1
    """
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v30:3.0a2-3.0b1')

    portal = getToolByName(context, 'portal_url').getPortalObject()

    # Install PloneLanguageTool
    installProduct('PloneLanguageTool', portal, hidden=True)
コード例 #27
0
ファイル: tests.py プロジェクト: gforcada/plone.app.upgrade
 def testContentTypeIconExpressions(self):
     """
     FTIs should now be using icon_expr instead of content_icon.
     (The former caches the expression object.)
     """
     tt = getToolByName(self.portal, "portal_types")
     tt.Document.icon_expr = None
     loadMigrationProfile(self.portal, self.profile, ('typeinfo', ))
     self.assertEqual(tt.Document.icon_expr,
                      "string:${portal_url}/document_icon.png")
コード例 #28
0
ファイル: tests.py プロジェクト: khink/plone.app.upgrade
 def testContentTypeIconExpressions(self):
     """
     FTIs should now be using icon_expr instead of content_icon.
     (The former caches the expression object.)
     """
     tt = getToolByName(self.portal, "portal_types")
     tt.Document.icon_expr = None
     loadMigrationProfile(self.portal, self.profile, ('typeinfo', ))
     self.assertEqual(tt.Document.icon_expr,
                      "string:${portal_url}/document_icon.png")
コード例 #29
0
ファイル: __init__.py プロジェクト: kkdhanesh/NBADEMO
def final_two51(context):
    """2.5-final -> 2.5.1
    """
    loadMigrationProfile(context,
                         'profile-plone.app.upgrade.v25:2.5final-2.5.1')

    # Required for #5569 (is_folderish needs reindexing) and #5231 (all text
    # indices need to be reindexed so they are split properly)
    migtool = getToolByName(context, 'portal_migration')
    migtool._needRecatalog = True
コード例 #30
0
ファイル: tests.py プロジェクト: plone/plone.app.upgrade
 def testAddSiteAdminToKeywordRoles(self):
     ptool = self.portal.portal_properties
     site_props = ptool.site_properties
     if not site_props.hasProperty('allowRolesToAddKeywords'):
         return
     site_props.allowRolesToAddKeywords = ('Manager', 'Reviewer')
     loadMigrationProfile(self.portal, self.profile)
     betas.to42beta1(self.portal.portal_setup)
     roles = site_props.allowRolesToAddKeywords
     self.assertEqual(roles, ('Manager', 'Reviewer', 'Site Administrator'))
コード例 #31
0
ファイル: alphas.py プロジェクト: plone/plone.app.upgrade
def to52alpha1(context):
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v52:to52alpha1')
    portal = getToolByName(context, 'portal_url').getPortalObject()

    cleanUpSkinsTool(portal)

    cleanup_resources()
    migrate_gopipindex(context)
    rebuild_memberdata(context)
    fix_core_behaviors_in_ftis(context)
コード例 #32
0
def reinstall_gs_profile(context):
    loadMigrationProfile(
        context,
        'profile-Products.EasyNewsletter:default'
    )
    loadMigrationProfile(
        context,
        'profile-Products.EasyNewsletter:install-base'
    )
    logger.info("Products.EasyNewsletter generic setup profile re-installed")
コード例 #33
0
def restoreTheme(context):
    skins = getToolByName(context, 'portal_skins')
    portal = getToolByName(context, 'portal_url').getPortalObject()
    old_default_skin = getattr(aq_base(skins), 'old_default_skin', None)

    if old_default_skin == 'Plone Default':
        v_storage = getUtility(IViewletSettingsStorage)
        uncustomized_layers = (
            'custom,tinymce,referencebrowser,LanguageTool,cmfeditions_views,'
            'CMFEditions,kupu_plone,kupu,kupu_tests,archetypes,archetypes_kss,'
            'mimetypes_icons,plone_kss,ATContentTypes,PasswordReset,'
            'plone_ecmascript,plone_wysiwyg,plone_prefs,plone_templates,'
            'classic_styles,plone_form_scripts,plone_scripts,plone_forms,'
            'plone_images,plone_content,plone_login,plone_deprecated,'
            'plone_3rdParty,cmf_legacy')
        if skins.selections.get('Plone Default') == uncustomized_layers:
            # if the old theme's layers hadn't been mucked with, we can just
            # use Plone Classic Theme
            old_default_skin = 'Plone Classic Theme'
        else:
            # otherwise, copy Plone Default to a new theme
            skins.selections[
                'Old Plone 3 Custom Theme'] = skins.selections.get(
                'Plone Default')
            # copy the viewlet order
            v_storage._order['Old Plone 3 Custom Theme'] = dict(
                v_storage._order.get('Plone Default', {}))
            v_storage._hidden['Old Plone 3 Custom Theme'] = dict(
                v_storage._hidden.get('Plone Default', {}))

            old_default_skin = 'Old Plone 3 Custom Theme'

        # reset the Plone Default theme to the standard layers and viewlets
        skins.selections['Plone Default'] = ''
        v_storage._order['Plone Default'] = {}
        v_storage._hidden['Plone Default'] = {}
        loadMigrationProfile(context, 'profile-Products.CMFPlone:plone',
                             steps=('skins', 'viewlets'))

    if old_default_skin is not None:
        setattr(aq_base(skins), 'default_skin', old_default_skin)
        request = aq_get(context, 'REQUEST', None)
        portal.changeSkin(old_default_skin, request)

    # The Sunburst theme is based on Plone Default. During the cleanUpSkinsTool
    # upgrade step we replace plone_styles with classic_styles in the default
    # theme. As a result Sunburst includes ``classic_styles`` at this point.
    theme = 'Sunburst Theme'
    paths = skins.selections.get(theme)
    if paths:
        new_paths = []
        for path in paths.split(','):
            if path != 'classic_styles':
                new_paths.append(path)
        skins.selections[theme] = ','.join(new_paths)
コード例 #34
0
ファイル: final.py プロジェクト: topiaruss/plone.app.upgrade
def to501(context):
    """5.0 -> 5.0.1"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to501')

    def refresh_getIcon_catalog_metadata(context):
        """
        get_icon redefined: now boolean:
        needs to update metadata
        true if item is type image or has image field (named 'image')
        e.g. leadimage
        see https://github.com/plone/Products.CMFPlone/issues/1226
        """
        # Attention, this relies heavily on catalog internals.

        # get the more visible zcatalog
        zcatalog = getToolByName(context, 'portal_catalog')

        # get the more hidden, inner (real) catalog implementation
        catalog = zcatalog._catalog
        try:
            # Get the getIcon index value and
            # check if there is a getIcon at all, this may not exist in some
            # customizations, who knows, but always exists in default Plone
            metadata_index = catalog.names.index('getIcon')
        except ValueError:
            logger.info('`getIcon` not in metadata, skip upgrade step')
            return

        cnt = 0
        # search whole catalog
        results = zcatalog.unrestrictedSearchResults()
        num_objects = len(results)
        pghandler = ZLogHandler(1000)
        pghandler.init('Updating getIcon metadata', num_objects)
        for brain in results:
            pghandler.report(cnt)
            # First get the new value
            try:
                obj = brain._unrestrictedGetObject()
            except (AttributeError, KeyError, TypeError, NotFound):
                continue
            new_value = bool(getattr(aq_base(obj), 'image', False))

            # We can now update the record with the new getIcon value
            record = list(catalog.data[brain.getRID()])
            record[metadata_index] = new_value
            catalog.data[brain.getRID()] = tuple(record)

            cnt += 1  # we are curious
        # done
        pghandler.finish()
        logger.info('Reindexed `getIcon` for %s items' % str(cnt))

    refresh_getIcon_catalog_metadata(context)
コード例 #35
0
ファイル: alphas.py プロジェクト: tuticapi/plone.app.upgrade
def to50alhpa3(context):
    """5.0alpha2 - > 5.0alpha3"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50alpha3')

    portal = getToolByName(context, 'portal_url').getPortalObject()
    registry = portal.portal_registry
    # At alpha3 we have the registry entry so we can migrate here
    first_weekday = registry.get('plone.app.event.first_weekday', None)
    if first_weekday is not None:
        # Set it. Otherwise, let plone.app.event install routine set it.
        registry['plone.first_weekday'] = first_weekday
コード例 #36
0
    def setUp(self):
        """ Setup """

        self.portal = self.layer['portal']
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        self.portal.invokeFactory('testpage', 'test-page')
        setRoles(self.portal, TEST_USER_ID, ['Member'])
        self.page = self.portal['test-page']
        self.page.edit(title="Test title", description="Test description")

        loadMigrationProfile(self.portal, 'profile-eea.rdfmarshaller:default')
コード例 #37
0
 def testGetObjPositionInParentIndex(self):
     from plone.app.folder.nogopip import GopipIndex
     catalog = self.portal.portal_catalog
     catalog.delIndex('getObjPositionInParent')
     catalog.addIndex('getObjPositionInParent', 'FieldIndex')
     self.assertFalse(
         isinstance(catalog.Indexes['getObjPositionInParent'], GopipIndex))
     loadMigrationProfile(self.portal, self.profile)
     self.assertTrue('getObjPositionInParent' in catalog.indexes())
     self.assertTrue(
         isinstance(catalog.Indexes['getObjPositionInParent'], GopipIndex))
コード例 #38
0
ファイル: betas.py プロジェクト: tuticapi/plone.app.upgrade
def to42beta1(context):
    """4.2a2 -> 4.2b1
    """
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v42:to42beta1')
    pprop = getToolByName(context, 'portal_properties')
    site_properties = pprop.site_properties
    if site_properties.hasProperty('allowRolesToAddKeywords'):
        value = site_properties.getProperty('allowRolesToAddKeywords')
        if 'Site Administrator' not in value:
            value = list(value)
            value.append('Site Administrator')
            site_properties.allowRolesToAddKeywords = tuple(value)
コード例 #39
0
ファイル: tests.py プロジェクト: khink/plone.app.upgrade
 def testInstallNewDependencies(self):
     self.setRoles(['Manager'])
     # test for running the TinyMCE profile by checking for the skin layer
     # it installs (the profile is marked as noninstallable, so we can't
     # ask the quick installer)
     skins_tool = getToolByName(self.portal, 'portal_skins')
     del skins_tool['tinymce']
     for i in range(2):
         loadMigrationProfile(self.portal, self.profile)
         self.failUnless('tinymce' in skins_tool)
         # sleep to avoid a GS log filename collision :-o
         time.sleep(1)
コード例 #40
0
ファイル: to_0006.py プロジェクト: johndam/ploneintranet
def prep_for_workgroups(context):
    ''' There is a new registry record called
    ploneintranet.userprofile.userprofile_hidden_info
    that makes the profile view configurable
    '''
    loadMigrationProfile(
        context,
        'profile-ploneintranet.userprofile.upgrades:to_0006',
    )
    mt = api.portal.get_tool('membrane_tool')
    if 'ploneintranet.userprofile.workgroup' not in mt.membrane_types:
        mt.membrane_types.append('ploneintranet.userprofile.workgroup')
        mt._p_changed = 1
コード例 #41
0
ファイル: tests.py プロジェクト: khink/plone.app.upgrade
 def testAddEventRegistrationJS(self):
     # Make sure event registration is added
     jsreg = self.portal.portal_javascripts
     # unregister first
     jsreg.unregisterResource('event-registration.js')
     script_ids = jsreg.getResourceIds()
     self.failIf('event-registration.js' in script_ids)
     loadMigrationProfile(self.portal, self.profile, ('jsregistry', ))
     # event registration test
     script_ids = jsreg.getResourceIds()
     self.failUnless('event-registration.js' in script_ids)
     after = jsreg.getResourcePosition('register_function.js')
     position = jsreg.getResourcePosition('event-registration.js')
     self.failUnless(position < after)
コード例 #42
0
ファイル: tests.py プロジェクト: kkdhanesh/NBADEMO
 def tesFixObjDeleteAction(self):
     # Prepare delete actions test
     editActions = ('delete',)
     for a in editActions:
         self.removeActionFromTool(a, category='object_buttons')
     loadMigrationProfile(self.portal, self.profile, ('actions', ))
     # delete action tests
     actions = [x.id for x in self.actions.object_buttons.listActions()
                if x.id in editActions]
     # check that all of our deleted actions are now present
     for a in editActions:
         self.assertTrue(a in actions)
     # ensure that they are present only once
     self.assertEqual(len(editActions), len(actions))
コード例 #43
0
ファイル: alphas.py プロジェクト: kkdhanesh/NBADEMO
def three0_alpha1(context):
    """2.5.x -> 3.0-alpha1
    """
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v30:2.5.x-3.0a1')

    portal = getToolByName(context, 'portal_url').getPortalObject()

    # The ATCT tool has lost all type migration functionality and quite some
    # metadata and index information stored on it needs to be updated.
    if HAS_ATCT:
        upgradeATCTTool(portal)

    # Install CMFEditions and CMFDiffTool
    installProduct('CMFEditions', portal, hidden=True)
コード例 #44
0
ファイル: upgrades.py プロジェクト: lmu/lakof
def uninstall_archetypes(context=None):
    portal_setup = api.portal.get_tool('portal_setup')
    loadMigrationProfile(portal_setup, 'profile-Products.ATContentTypes:uninstall')
    qi = api.portal.get_tool('portal_quickinstaller')
    addons = [
        'Archtypes',
        'ATContentTypes',
        'plone.app.referenceablebehavior',
        'plone.app.blob',
        'plone.app.imaging',
    ]
    for addon in addons:
        if qi.isProductInstalled(addon):
            qi.uninstallProducts([addon])
コード例 #45
0
ファイル: betas.py プロジェクト: topiaruss/plone.app.upgrade
def to50beta3(context):
    """5.0beta2 -> 5.0beta3"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50beta3')
    loadMigrationProfile(context, 'profile-plone.app.querystring:upgrade_to_8')
    portal = getSite()
    cp_tool = getToolByName(portal, 'portal_controlpanel')
    for configlet in cp_tool.listActions():
        if configlet.id in cp_mapping:
            configlet.category = cp_mapping[configlet.id]

    configlets = cp_tool.listActions()
    configlet = [x for x in configlets if x.id == 'TypesSettings'][0]
    configlet.title = "Content Settings"
    configlet.setActionExpression(
        "string:${portal_url}/@@content-controlpanel")
コード例 #46
0
    def setUp(self):
        """ Setup """

        self.portal = self.layer['portal']
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        alsoProvides(self.portal, ILinkedDataHomepage)
        self.portal.invokeFactory('testpage', 'test-page')
        setRoles(self.portal, TEST_USER_ID, ['Member'])
        self.page = self.portal['test-page']
        self.page.edit(title="Test title", description="Test description")

        # Cheat condition @@plone_context_state/is_view_template
        self.page.REQUEST['ACTUAL_URL'] = self.page.absolute_url()

        loadMigrationProfile(self.portal, 'profile-eea.rdfmarshaller:default')
コード例 #47
0
ファイル: betas.py プロジェクト: kkdhanesh/NBADEMO
def three0_beta1(portal):
    """3.0.6 -> 3.1-beta1
    """
    out = []

    loadMigrationProfile(portal,
                         'profile-plone.app.upgrade.v31:3.0.6-3.1beta1')

    addBrowserLayer(portal, out)
    addCollectionAndStaticPortlets(portal, out)
    migratePortletTypeRegistrations(portal, out)
    removeDoubleGenericSetupSteps(portal, out)
    reinstallCMFPlacefulWorkflow(portal, out)
    replace_local_role_manager(portal)

    return out
コード例 #48
0
def finalize(context=None):
    """This is run in Plone 5.2 on Python 3
    """
    portal_setup = api.portal.get_tool('portal_setup')

    # enable behaviors
    loadMigrationProfile(
        portal_setup,
        DEFAULT_PROFILE,
        steps=['typeinfo', 'catalog', 'plone.app.registry'],
    )

    portal_setup.runAllImportStepsFromProfile(
        'profile-plone.app.registry:default', purge_old=False)

    # set dropdown-navigation depth to 3
    api.portal.set_registry_record('plone.navigation_depth', 3)
コード例 #49
0
def apply_configurations(context):
    """Atualiza perfil para versao 5."""
    logger = logging.getLogger(PROJECTNAME)
    profile = 'profile-interlegis.portalmodelo.policy.upgrades.v5:default'
    loadMigrationProfile(context, profile)
    logger.info('Atualizado para versao 5')

    q_i = api.portal.get_tool(name='portal_quickinstaller')

    for up in PRODUCTS:
        if q_i.isProductInstalled(up):
            q_i.uninstallProducts([up])
    logger.info('Desinstalando produto de Social Like para evitar conflitos')

    if not q_i.isProductInstalled('sc.social.like'):
        q_i.installProduct('sc.social.like')
    logger.info('Instalado produto de Social Like.')
コード例 #50
0
ファイル: betas.py プロジェクト: topiaruss/plone.app.upgrade
def to50beta2(context):
    """5.0beta1 -> 5.0beta2"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50beta2')
    portal = getSite()

    registry = getUtility(IRegistry)
    settings = registry.forInterface(IImagingSchema, prefix="plone")

    try:
        iprops = portal.portal_properties.imaging_properties

        settings.allowed_sizes = [
            s.decode('utf8') for s in iprops.getProperty('allowed_sizes')
        ]  # noqa
        settings.quality = iprops.getProperty('quality')
    except AttributeError:
        # will only be there if from older plone instance
        pass
コード例 #51
0
 def testCoreContentIconExprCleared(self):
     types = getToolByName(self.portal, 'portal_types')
     catalog = getToolByName(self.portal, 'portal_catalog')
     # Reinstate the now-empty icon expression for the Document type
     doc_icon_expr = Expression('string:${portal_url}/document_icon.png')
     types['Document'].icon_expr_object = doc_icon_expr
     front = self.portal['front-page']
     catalog.reindexObject(front)
     old_modified = front.modified()
     # Make sure the getIcon metadata column shows the "original" value
     brains = catalog(id='front-page')
     self.assertEqual(brains[0].getIcon, 'document_icon.png')
     # Run the migration
     loadMigrationProfile(self.portal, self.profile)
     updateIconMetadata(self.portal)
     # The getIcon column should now be empty
     self.assertEqual(catalog(id='front-page')[0].getIcon, '')
     self.assertEqual(front.modified(), old_modified)
コード例 #52
0
ファイル: tests.py プロジェクト: khink/plone.app.upgrade
    def testReplaceReferencebrowser(self):
        self.setRoles(['Manager'])
        skins_tool = getToolByName(self.portal, 'portal_skins')
        sels = skins_tool._getSelections()
        for skinname, layer in sels.items():
            layers = layer.split(',')
            self.failIf('ATReferenceBrowserWidget' in layers)
            layers.remove('referencebrowser')
            new_layers = ','.join(layers)
            sels[skinname] = new_layers

        loadMigrationProfile(self.portal, self.profile)
        setupReferencebrowser(self.portal)

        sels = skins_tool._getSelections()
        for skinname, layer in sels.items():
            layers = layer.split(',')
            self.failUnless('referencebrowser' in layers)
コード例 #53
0
def to50rc1(context):
    """5.0beta4 -> 5.0rc1"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50rc1')
    portal = getSite()
    # install plone.app.linkintegrity and its dependencies
    qi = getToolByName(portal, 'portal_quickinstaller')
    if not qi.isProductInstalled('plone.app.linkintegrity'):
        qi.installProduct('plone.app.linkintegrity')
    migrate_linkintegrity_relations(portal)

    upgrade_usergroups_controlpanel_settings(context)
    migrate_displayPublicationDateInByline(context)

    # Migrate settings from portal_properties to the configuration registry
    pprop = getToolByName(portal, 'portal_properties')
    site_properties = pprop['site_properties']

    if site_properties.hasProperty('icon_visibility'):
        registry = getUtility(IRegistry)
        settings = registry.forInterface(ISiteSchema, prefix='plone')
        value = site_properties.getProperty('icon_visibility', 'false')
        settings.icon_visiblity = value

    # These have been migrated in previous upgrade steps. Safe to remove.
    properties_to_remove = [
        'allowAnonymousViewAbout', 'available_editors', 'default_contenttype',
        'default_language', 'default_editor', 'disable_folder_sections',
        'disable_nonfolderish_sections', 'enable_inline_editing',
        'enable_link_integrity_checks', 'enable_livesearch', 'enable_sitemap',
        'enable_wf_state_filtering', 'exposeDCMetaTags', 'ext_editor',
        'forbidden_contenttypes', 'icon_visibility', 'lock_on_ttw_edit',
        'many_groups', 'many_users', 'number_of_days_to_keep',
        'search_collapse_options', 'search_enable_batch_size',
        'search_enable_description_search', 'search_review_state_for_anon',
        'search_enable_sort_on', 'search_enable_title_search',
        'types_not_searched', 'use_email_as_login', 'use_folder_contents',
        'use_uuid_as_userid', 'user_registration_fields', 'visible_ids',
        'webstats_js'
    ]
    for p in properties_to_remove:
        if site_properties.hasProperty(p):
            site_properties._delProperty(p)
コード例 #54
0
ファイル: betas.py プロジェクト: kkdhanesh/NBADEMO
def beta3_beta4(context):
    """4.0beta3 -> 4.0beta4
    """
    loadMigrationProfile(context,
                         'profile-plone.app.upgrade.v40:4beta3-4beta4')

    pprop = getToolByName(context, 'portal_properties')
    site_properties = pprop.site_properties
    if site_properties.hasProperty('typesLinkToFolderContentsInFC'):
        value = site_properties.getProperty('typesLinkToFolderContentsInFC')
        if 'Large Plone Folder' in value:
            value.remove('Large Plone Folder')
            site_properties.typesLinkToFolderContentsInFC = value

    navtree_properties = pprop.navtree_properties
    if navtree_properties.hasProperty('parentMetaTypesNotToQuery'):
        value = navtree_properties.getProperty('parentMetaTypesNotToQuery')
        if 'Large Plone Folder' in value:
            value.remove('Large Plone Folder')
            navtree_properties.parentMetaTypesNotToQuery = value
コード例 #55
0
def move_pw_reset_tool(context):
    """ Move PasswordResetTool from its own product to CMFPlone
    """
    pw_reset_tool = getToolByName(context, 'portal_password_reset')
    # Need to use getattr here. The _timedelta and _check_user are a class
    # attributes and not available in the instance dict until set
    # in case of defaults the do not exist in the <persistent broken ...>
    # object we fetch here.
    old_days_timeout = getattr(pw_reset_tool, '_timedelta', _marker)
    old_user_check = getattr(pw_reset_tool, '_user_check', _marker)
    portal = getToolByName(context, 'portal_url').getPortalObject()
    del portal['portal_password_reset']
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v51:to51beta1')
    pw_reset_tool = getToolByName(context, 'portal_password_reset')
    if old_days_timeout is not _marker:
        if old_days_timeout < 1:
            old_days_timeout = 7
        pw_reset_tool._timedelta = int(old_days_timeout)
    if old_user_check is not _marker:
        pw_reset_tool._user_check = bool(old_user_check)
コード例 #56
0
ファイル: final.py プロジェクト: tkimnguyen/plone.app.upgrade
def to501(context):
    """5.0 -> 5.0.1"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to501')

    def reindex_getIcon(context):
        """
        get_icon redefined: now boolean: 
        true if dexterity item is image or has image field (named 'image') e.g. leadimage 
        see https://github.com/plone/Products.CMFPlone/issues/1226
        """
        catalog = getToolByName(context, 'portal_catalog')
        search = catalog.unrestrictedSearchResults
        cnt = 0
        iface = "plone.dexterity.interfaces.IDexterityContent"
        for brain in search(object_provides=iface):
            brain._unrestrictedGetObject().reindexObject(idxs=['getIcon'])
            cnt += 1
        logger.info('Reindexed `getIcon` for %s dexterity items' % str(cnt))

    reindex_getIcon(context)
コード例 #57
0
def threeX_alpha1(context):
    """3.x -> 4.0alpha1
    """
    try:
        import plone.app.jquerytools
        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', 'jsregistry'))
    # Install plonetheme.classic profile
    # (if, installed, it will be removed in Plone 5)
    qi = getToolByName(context, 'portal_quickinstaller')
    stool = getToolByName(context, 'portal_setup')
    if 'plonetheme.classic' in qi:
        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
コード例 #58
0
ファイル: testing.py プロジェクト: ksuess/collective.playlist
 def setUpPloneSite(self, portal):
     app = portal.aq_parent
     login(app['acl_users'], 'admin')
     # import old ZEXP
     try:
         path = os.path.join(os.path.abspath(os.path.dirname(__file__)),
                             'data', 'test-full.zexp')
         app._importObjectFromFile(path, verify=0)
     except Exception:
         logger.exception('Failed to import ZEXP from old site.')
     else:
         # run upgrades
         self['portal'] = portal = app.test
         setSite(portal)
         if plone_version >= '5.2':
             # for 5.2 we need tools as utilities
             loadMigrationProfile(
                 portal.portal_setup,
                 'profile-plone.app.upgrade.v52:to52alpha1',
                 steps=['componentregistry'])
         portal.portal_migration.upgrade(swallow_errors=False)
         setSite(None)
コード例 #59
0
ファイル: alphas.py プロジェクト: tuticapi/plone.app.upgrade
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)
コード例 #60
0
ファイル: betas.py プロジェクト: topiaruss/plone.app.upgrade
def to50rc2(context):
    """5.0rc1 -> 5.0rc2"""
    loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to50rc2')
    portal = getSite()

    site_properties_to_remove = [
        'email_from_address', 'email_from_name', 'enable_permalink'
    ]

    for p in site_properties_to_remove:
        if portal.hasProperty(p):
            portal._delProperty(p)

    # Migrate settings from portal_properties to the configuration registry
    pprop = getToolByName(portal, 'portal_properties')
    site_properties = pprop['site_properties']
    registry = getUtility(IRegistry)

    if site_properties.hasProperty('search_results_description_length'):
        settings = registry.forInterface(ISearchSchema, prefix='plone')
        value = site_properties.getProperty(
            'search_results_description_length', 160)
        settings.search_results_description_length = value

    properties_to_migrate = [
        'auth_cookie_length', 'verify_login_name', 'external_login_url',
        'external_logout_url', 'external_login_iframe'
    ]
    for p in properties_to_migrate:
        if site_properties.hasProperty(p):
            value = site_properties.getProperty(p)
            registry['plone.%s' % p] = value
            site_properties._delProperty(p)

    if site_properties.hasProperty('allow_external_login_sites'):
        value = site_properties.get('allow_external_login_sites')
        if value is not None:
            registry['plone.allow_external_login_sites'] = tuple(value)
        site_properties._delProperty('allow_external_login_sites')