Advertisement
Guest User

Untitled

a guest
May 27th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. from AccessControl.SecurityManagement import newSecurityManager
  2. from pprint import pprint
  3. from Products.CMFCore.utils import getToolByName
  4. from Products.CMFPlone.interfaces import IPloneSiteRoot
  5. from Testing.makerequest import makerequest
  6. from zope.app.component.hooks import setSite
  7.  
  8.  
  9. app = globals()['app']
  10. user = None
  11.  
  12. while not user:
  13. user = app.acl_users.getUser(raw_input('Admin user ID (Zope level): ').strip())
  14.  
  15. user = user.__of__(app.acl_users)
  16. newSecurityManager(app, user)
  17. app = makerequest(app)
  18.  
  19. overview_view = app.restrictedTraverse('plone-overview')
  20. print 'SITES:'
  21. for site in overview_view.sites():
  22. print '-', '/'.join(site.getPhysicalPath())
  23.  
  24. while True:
  25. site_path = raw_input('Path to Plone site to update: ').strip().strip('/')
  26. try:
  27. site = app.restrictedTraverse(site_path)
  28. except Exception, exc:
  29. print 'ERROR:', exc
  30. else:
  31. print 'FOUND:', site
  32. if not IPloneSiteRoot.providedBy(site):
  33. print 'ERROR: not a Plone site:', site
  34. else:
  35. break
  36.  
  37. setSite(site)
  38.  
  39. historiesstorage = getToolByName(site, 'portal_historiesstorage')
  40. hidhandler = getToolByName(site, "portal_historyidhandler")
  41. shadowstorage = historiesstorage._getShadowStorage()._storage
  42. versions_repo = historiesstorage._getZVCRepo()
  43.  
  44. print 'Gathering statistics..'
  45. statistics = historiesstorage.zmi_getStorageStatistics()
  46.  
  47. pprint(statistics['summaries'])
  48. print ''
  49. print 'Deleting', statistics['summaries']['deletedHistories'], 'histories', \
  50. 'and', statistics['summaries']['deletedVersions'], 'versions.'
  51.  
  52. for historyinfo in statistics['deleted']:
  53. history_id = historyinfo['history_id']
  54. history = historiesstorage._getShadowHistory(history_id)
  55.  
  56. for zvc_key in set([
  57. historiesstorage._getZVCAccessInfo(history_id, selector, True)[0]
  58. for selector in history._available]):
  59. if zvc_key in versions_repo._histories:
  60. del versions_repo._histories[zvc_key]
  61.  
  62. shadowstorage.pop(history_id, None)
  63.  
  64. import transaction
  65. transaction.commit()
  66. print 'All done.'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement