Esempio n. 1
0
def assign_version(context, new_version):
    """ Assign a specific version id to an object
    """

    # Verify if there are more objects under this version
    cat = getToolByName(context, 'portal_catalog')
    brains = cat.searchResults({'getversionid': new_version,
                                'show_inactive': True})
    if brains and not IVersionEnhanced.providedBy(context):
        alsoProvides(context, IVersionEnhanced)
    if len(brains) == 1:
        target_ob = brains[0].getObject()
        if not IVersionEnhanced.providedBy(target_ob):
            alsoProvides(target_ob, IVersionEnhanced)

    # Set new version ID
    verparent = IVersionControl(context)
    verparent.setVersionId(new_version)
    context.reindexObject()
Esempio n. 2
0
def assign_version(context, new_version):
    """ Assign a specific version id to an object
    """

    # Verify if there are more objects under this version
    cat = getToolByName(context, 'portal_catalog')
    brains = cat.searchResults({
        'getVersionId': new_version,
        'show_inactive': True
    })
    if brains and not IVersionEnhanced.providedBy(context):
        alsoProvides(context, IVersionEnhanced)
    if len(brains) == 1:
        target_ob = brains[0].getObject()
        if not IVersionEnhanced.providedBy(target_ob):
            alsoProvides(target_ob, IVersionEnhanced)

    # Set new version ID
    verparent = IVersionControl(context)
    verparent.setVersionId(new_version)
    context.reindexObject(idxs=['getVersionId'])
Esempio n. 3
0
def move_soer_content(context):
    """ Move relevant soer content under /soer
    """
    ctool = getToolByName(context, 'portal_catalog')

    soer_2015 = context.restrictedTraverse("/www/SITE/soer-2015")
    soer_2020 = context.restrictedTraverse("/www/SITE/soer-2020")
    soer = context.restrictedTraverse("/www/SITE/soer")

    paths = ["/www/SITE/soer"]
    vers_dict = {}
    for path in paths:
        brains = ctool.searchResults(path=path, Language="all")

        for brain in brains:
            obj = brain.getObject()
            try:
                control = IVersionControl(obj)
            except:
                continue
            version_id = control.getVersionId() or None

            if obj.id in ['soer-2015', 'soer-2020'
                          ] and obj.portal_type == 'Folder':
                logger.info('UPDATING FOLDER %s' % obj.absolute_url())
                vers_dict.update({obj.id.split('-')[-1]: version_id})
            else:
                vers_dict.update({obj.id: version_id})

    content.move(soer_2015, soer, '2015')
    content.move(soer_2020, soer, '2020')
    soer_2020_intro = context.restrictedTraverse("/www/SITE/soer/2020/intro")
    content.copy(soer_2020_intro, soer)

    # set default page
    soer.default_page = 'intro'
    soer._p_changed = True
    soer.reindexObject()

    paths = ["/www/SITE/soer"]
    for path in paths:
        brains = ctool.searchResults(path=path, Language="all")

        for brain in brains:
            obj = brain.getObject()
            try:
                control = IVersionControl(obj)
            except:
                continue

            version_id = control.getVersionId() or None
            if vers_dict.get(obj.id, None):
                if vers_dict.get(obj.id, None) == version_id:
                    logger.info('GOOD OBJECT %s' % obj.absolute_url())
                else:
                    logger.info('BAD OBJECT %s' % obj.absolute_url())
                    control.setVersionId(vers_dict.get(obj.id))
                    obj._p_changed = True
                    obj.reindexObject()
                    transaction.commit()

    logger.info('Finished moving soer content ... DONE')
    return 'Done moving'
Esempio n. 4
0
def migrate_version(brains, vobj, count, **kwargs):
    """ migrate_versions given brains and prefix
    """
    increment = True
    no_versions = []
    prefix = str(vobj.title)
    parent = None
    datasets = kwargs.get('datasets')
    if datasets:
        site = getSite()
        parent = site.get('eea_permalink_objects')
        if not parent:
            parent_id = site.invokeFactory('Folder', 'eea_permalink_objects')
            parent = site[parent_id]

    for brain in brains:
        obj = brain.getObject()
        if not obj:
            continue
        adapter = queryAdapter(obj, IGetVersions)
        if not adapter:
            no_versions.append(obj.absolute_url())
            continue

        versions = adapter.versions()
        latest_version = versions[-1]
        for obj in versions:
            verparent = IVersionControl(obj)
            verparent_id = verparent.versionId
            if prefix not in verparent_id:
                version_id = "{0}-{1}".format(prefix, count)
                orig_id = version_id
                if vobj.prefix_with_language:
                    version_id = version_id + '-' + obj.getLanguage()
                if getattr(obj, 'getTranslations', None):
                    translations = obj.getTranslations()
                    if len(translations) > 1:
                        canonical = obj.getCanonical()
                        if vobj.prefix_with_language:
                            version_id = orig_id + '-' + \
                                canonical.getLanguage()
                        IVersionControl(canonical).setVersionId(version_id)
                        canonical.reindexObject(idxs=['getVersionId'])
                        for trans_tuple in translations.items():
                            translation = trans_tuple[1][0]
                            if translation != canonical:
                                version_id = orig_id + '-' + trans_tuple[0]
                                IVersionControl(translation).setVersionId(
                                    version_id)
                                translation.reindexObject(
                                    idxs=['getVersionId'])
                    else:
                        if datasets and obj is latest_version:
                            vid = IGetVersions(obj).versionId
                            zmi_addPermalinkMapping(parent, vid, version_id)
                        verparent.setVersionId(version_id)
                        obj.reindexObject(idxs=['getVersionId'])
                else:
                    verparent.setVersionId(version_id)
                    obj.reindexObject(idxs=['getVersionId'])
                increment = True
                logger.info('%s ==> %s --> %s', obj.absolute_url(1),
                            verparent_id, version_id)
            else:
                increment = False
        if increment:
            count += 1
            if count % 50 == 0:
                transaction.commit()
    logger.info("MIGRATION DONE")
    return count
Esempio n. 5
0
def migrate_version(brains, vobj, count, **kwargs):
    """ migrate_versions given brains and prefix
    """
    increment = True
    no_versions = []
    prefix = str(vobj.title)
    parent = None
    datasets = kwargs.get('datasets')
    if datasets:
        site = getSite()
        parent = site.get('eea_permalink_objects')
        if not parent:
            parent_id = site.invokeFactory('Folder', 'eea_permalink_objects')
            parent = site[parent_id]

    for brain in brains:
        obj = brain.getObject()
        if not obj:
            continue
        adapter = queryAdapter(obj, IGetVersions)
        if not adapter:
            no_versions.append(obj.absolute_url())
            continue

        versions = adapter.versions()
        latest_version = versions[-1]
        for obj in versions:
            verparent = IVersionControl(obj)
            verparent_id = verparent.versionId
            if prefix not in verparent_id:
                version_id = "{0}-{1}".format(prefix, count)
                orig_id = version_id
                if vobj.prefix_with_language:
                    version_id = version_id + '-' + obj.getLanguage()
                if getattr(obj, 'getTranslations', None):
                    translations = obj.getTranslations()
                    if len(translations) > 1:
                        canonical = obj.getCanonical()
                        if vobj.prefix_with_language:
                            version_id = orig_id + '-' + canonical.getLanguage()
                        IVersionControl(canonical).setVersionId(version_id)
                        canonical.reindexObject(idxs=['getVersionId'])
                        for trans_tuple in translations.items():
                            translation = trans_tuple[1][0]
                            if translation != canonical:
                                version_id = orig_id + '-' + trans_tuple[0]
                                IVersionControl(translation).setVersionId(
                                    version_id)
                                translation.reindexObject(idxs=['getVersionId'])
                    else:
                        if datasets and obj is latest_version:
                            vid = IGetVersions(obj).versionId
                            zmi_addPermalinkMapping(parent, vid, version_id)
                        verparent.setVersionId(version_id)
                        obj.reindexObject(idxs=['getVersionId'])
                else:
                    verparent.setVersionId(version_id)
                    obj.reindexObject(idxs=['getVersionId'])
                increment = True
                logger.info('%s ==> %s --> %s',
                    obj.absolute_url(1), verparent_id, version_id)
            else:
                increment = False
        if increment:
            count += 1
            if count % 50 == 0:
                transaction.commit()
    logger.info("MIGRATION DONE")
    return count