def getVersionIdForIndex(obj): """indexes versionid """ try: ver = IVersionControl(obj) return ver.getVersionId() except (TypeError, ValueError): #ComponentLookupError, # The catalog expects AttributeErrors when a value can't be found raise AttributeError
def __call__(self, *args, **kwargs): if not IVersionControl: return self._redirect("eea.versions NOT installed", "warn") try: version = IVersionControl(self.context) return self.fixVersion(version.getVersionId()) except Exception as err: logger.exception(err) return self._redirect("Couldn't synchronize older versions", "warn")
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'