dry_run and abort migration added to migration view.
svn path=/plone.app.discussion/trunk/; revision=32588
This commit is contained in:
parent
adb0390227
commit
275cb885ea
@ -13,11 +13,15 @@ from Products.statusmessages.interfaces import IStatusMessage
|
|||||||
|
|
||||||
from Products.CMFCore.interfaces import IContentish
|
from Products.CMFCore.interfaces import IContentish
|
||||||
|
|
||||||
|
from Products.CMFCore.interfaces._content import IDiscussionResponse
|
||||||
|
|
||||||
|
import transaction
|
||||||
|
|
||||||
from zope.component import createObject
|
from zope.component import createObject
|
||||||
|
|
||||||
from plone.app.discussion.comment import CommentFactory
|
from plone.app.discussion.comment import CommentFactory
|
||||||
|
|
||||||
from plone.app.discussion.interfaces import IConversation, IReplies
|
from plone.app.discussion.interfaces import IConversation, IReplies, IComment
|
||||||
|
|
||||||
|
|
||||||
class View(BrowserView):
|
class View(BrowserView):
|
||||||
@ -31,10 +35,11 @@ class View(BrowserView):
|
|||||||
self.total_comments_migrated = 0
|
self.total_comments_migrated = 0
|
||||||
self.total_comments_deleted = 0
|
self.total_comments_deleted = 0
|
||||||
|
|
||||||
|
transaction.begin()
|
||||||
|
|
||||||
catalog = getToolByName(context, 'portal_catalog')
|
catalog = getToolByName(context, 'portal_catalog')
|
||||||
dtool = context.portal_discussion
|
dtool = context.portal_discussion
|
||||||
comment_brains = catalog.searchResults(Type='Discussion Item')
|
|
||||||
|
|
||||||
def log(msg):
|
def log(msg):
|
||||||
context.plone_log(msg)
|
context.plone_log(msg)
|
||||||
out.append(msg)
|
out.append(msg)
|
||||||
@ -90,15 +95,22 @@ class View(BrowserView):
|
|||||||
# Return True when all comments on a certain level have been migrated.
|
# Return True when all comments on a certain level have been migrated.
|
||||||
return True
|
return True
|
||||||
|
|
||||||
log("Comment migration started.")
|
|
||||||
|
|
||||||
# Find content
|
# Find content
|
||||||
brains = catalog.searchResults(
|
brains = catalog.searchResults(
|
||||||
object_provides='Products.CMFCore.interfaces._content.IContentish')
|
object_provides='Products.CMFCore.interfaces._content.IContentish')
|
||||||
total_comment_brains = len(comment_brains)
|
|
||||||
log("Found %s content objects." % len(brains))
|
log("Found %s content objects." % len(brains))
|
||||||
log("Found %s Discussion Item objects." % total_comment_brains)
|
|
||||||
|
|
||||||
|
count_discussion_items = len(catalog.searchResults(Type='Discussion Item'))
|
||||||
|
count_comments_pad = len(catalog.searchResults(object_provides=IComment.__identifier__))
|
||||||
|
count_comments_old = len(catalog.searchResults(object_provides=IDiscussionResponse.__identifier__))
|
||||||
|
|
||||||
|
log("Found %s Discussion Item objects." % count_discussion_items)
|
||||||
|
log("Found %s old discussion items." % count_comments_old)
|
||||||
|
log("Found %s plone.app.discussion comments." % count_comments_pad)
|
||||||
|
|
||||||
|
log("\n")
|
||||||
|
log("Start comment migration.")
|
||||||
|
|
||||||
# This loop is necessary to get all contentish objects, but not
|
# This loop is necessary to get all contentish objects, but not
|
||||||
# the Discussion Items. This wouldn't be necessary if the
|
# the Discussion Items. This wouldn't be necessary if the
|
||||||
# zcatalog would support NOT expressions.
|
# zcatalog would support NOT expressions.
|
||||||
@ -115,8 +127,8 @@ class View(BrowserView):
|
|||||||
replies = talkback.getReplies()
|
replies = talkback.getReplies()
|
||||||
if replies:
|
if replies:
|
||||||
conversation = IConversation(obj)
|
conversation = IConversation(obj)
|
||||||
log("Create conversation for: '%s'" % obj.Title())
|
log("\n")
|
||||||
log("%s: Found talkback" % obj.absolute_url(relative=1))
|
log("Migrate '%s' (%s)" % (obj.Title(), obj.absolute_url(relative=1)))
|
||||||
migrate_replies(context, 0, replies)
|
migrate_replies(context, 0, replies)
|
||||||
obj = aq_parent(talkback)
|
obj = aq_parent(talkback)
|
||||||
obj.talkback = None
|
obj.talkback = None
|
||||||
@ -125,7 +137,20 @@ class View(BrowserView):
|
|||||||
log("Something went wrong during migration. The number of migrated comments (%s)\
|
log("Something went wrong during migration. The number of migrated comments (%s)\
|
||||||
differs from the number of deleted comments (%s)."
|
differs from the number of deleted comments (%s)."
|
||||||
% (self.total_comments_migrated, self.total_comments_deleted))
|
% (self.total_comments_migrated, self.total_comments_deleted))
|
||||||
|
transaction.abort()
|
||||||
|
log("Abort transaction")
|
||||||
|
|
||||||
|
log("\n")
|
||||||
log("Comment migration finished.")
|
log("Comment migration finished.")
|
||||||
|
log("\n")
|
||||||
|
|
||||||
log("%s of %s comments migrated."
|
log("%s of %s comments migrated."
|
||||||
% (self.total_comments_migrated, total_comment_brains))
|
% (self.total_comments_migrated, count_discussion_items))
|
||||||
|
|
||||||
|
if self.request.has_key("dry_run"):
|
||||||
|
transaction.abort()
|
||||||
|
log("Dry run")
|
||||||
|
log("Abort transaction")
|
||||||
|
|
||||||
|
transaction.commit()
|
||||||
return '\n'.join(out)
|
return '\n'.join(out)
|
||||||
|
Loading…
Reference in New Issue
Block a user