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()
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'])
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'
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
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