def upgrade0to1(setupTool): portal = _getPortal(setupTool) _setPurging(portal, False) catalog = getToolByName(portal, 'portal_catalog') catalog.clearFindAndRebuild() qi = getToolByName(portal, 'portal_quickinstaller') qi.reinstallProducts(_dependencies0) for product in _dependencies0: qi.upgradeProduct(product) transaction.commit() qi.installProducts(['eea.facetednavigation', 'eke.specimens']) setAutoIngestProperties(portal) orderFolderTabs(portal) createMembersListSearchPage(portal) enableEmbeddableVideos(portal) installNewPackages(portal, _newPackages0) createCommitteesFolder(portal) fixSiteIDs(portal) updateGoogleSiteVerification(portal) removeGoogleAnalytics(portal) catalog.clearFindAndRebuild() _setPurging(portal, True)
def upgrade1to4(setupTool): portal = _getPortal(setupTool) # Disable annoying link integrity checking propTool = getToolByName(portal, 'portal_properties') origLinkIntegrityMode = propTool.site_properties.getProperty('enable_link_integrity_checks', True) propTool.site_properties.manage_changeProperties(enable_link_integrity_checks=False) # I do not comprehend why we still have old-style site IDs. Kill 'em all # and let re-ingest bring 'em back portal.sites.manage_delObjects(portal.sites.keys()) # Kill the old specimens tab if 'specimens' in portal.keys(): portal.manage_delObjects('specimens') # Recatalog catalog = getToolByName(portal, 'portal_catalog') catalog.clearFindAndRebuild() # Reinstall qi = getToolByName(portal, 'portal_quickinstaller') qi.reinstallProducts(_dependencies4) for product in _dependencies4: qi.upgradeProduct(product) transaction.commit() qi.installProducts(['eea.facetednavigation', 'eke.specimens']) installNewPackages(portal, _newPackages4) transaction.commit() # FIXME: OK, the above allegedly did a reinstall of eke.publications which was a profile 0 # to profile 4. However, tracing through, I found it was already at profile 4! WTF?! # Until I can figure that out, I'm manually calling eke.publications's upgrade step: from eke.publications.upgrades import setUpFacetedNavigation setUpFacetedNavigation(setupTool) # Same with specimens: from eke.specimens.upgrades import addSampleSpecimenSets, addFacetedSearch, updateDiagnosisIndex addSampleSpecimenSets(setupTool) addFacetedSearch(setupTool) updateDiagnosisIndex(setupTool) # Remove customizations that made it into software nukeCustomizedLoginForm(portal) nukeCustomizedCSS(portal) nukeCustomizedViews(portal) removeExtraViewlets(portal) transaction.commit() # Make sure we're using the Plone 4 editor, TinyMCE, and not the Plone 3 editor, Kupu setEditorProperties(portal) transaction.commit() # Recreate faceted pages createMembersListSearchPage(portal) transaction.commit() # Create the eke.committees-provided Committees Folder createCommitteesFolder(portal) transaction.commit() # Create the new specimens folder createSpecimensPage(portal) disableSpecimenPortlets(portal) resetIngestPaths(portal) transaction.commit() # Update ingest paths, then ingest the committees & specimens folder—and everything else too ingestPaths = portal.getProperty('edrnIngestPaths') ingestPaths += ('committees', 'specimens') portal.manage_changeProperties(edrnIngestPaths=ingestPaths) portal.unrestrictedTraverse('@@ingestEverythingFully')() transaction.commit() # Add a container for Collaborative Groups (the QuickLinks portlet already has a link to it) # The new committees must already be ingested because the collaborative groups are built # from them (from committees whose type == 'Collaborative Group', specifically). # Also, we expect Collaborative Groups to upload & download files, so make them versionable. createCollaborationsFolder(portal) makeFilesVersionable(portal) transaction.commit() # Set up the many_users/many_groups properties props = getToolByName(portal, 'portal_properties') props.site_properties.manage_changeProperties(many_users=True, many_groups=True) transaction.commit() # Enable table sorting for everyone javascripts = getToolByName(portal, 'portal_javascripts') javascripts.getResource('table_sorter.js').setAuthenticated(False) javascripts.moveResourceBefore('table_sorter.js', 'dropdown.js') addTableSortingNote(portal) transaction.commit() # Restore annoying link integrity checking propTool.site_properties.manage_changeProperties(enable_link_integrity_checks=origLinkIntegrityMode) transaction.commit()