summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2014-01-09 02:01:01 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2014-01-09 02:01:01 -0300
commit512838ae60403bd6fb10da145e2e08426776336d (patch)
tree5276d2f7a4fbdb5e45cb44da29eb05ebf210321f
parent66f0d3a1b317edfe8e5cce50d90ca7eafacbfaeb (diff)
downloadaskbot-512838ae60403bd6fb10da145e2e08426776336d.tar.gz
askbot-512838ae60403bd6fb10da145e2e08426776336d.tar.bz2
askbot-512838ae60403bd6fb10da145e2e08426776336d.zip
added import of accepted questions and skipped importing deleted content
-rw-r--r--askbot/management/commands/askbot_add_osqa_content.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/askbot/management/commands/askbot_add_osqa_content.py b/askbot/management/commands/askbot_add_osqa_content.py
index a61ad9fa..6820a036 100644
--- a/askbot/management/commands/askbot_add_osqa_content.py
+++ b/askbot/management/commands/askbot_add_osqa_content.py
@@ -117,6 +117,7 @@ class Command(BaseImportXMLCommand):
#model="forum.question"/answer/comment - derivatives of the Node model
self.import_threads()
self.import_posts('question', True)
+ #inside we also mark accepted answer, b/c it's more convenient that way
self.import_posts('answer')
self.import_posts('comment')
#model="forum.noderevision"
@@ -367,17 +368,26 @@ class Command(BaseImportXMLCommand):
model_name = models_map[post_type]
for osqa_node in self.get_objects_for_model(model_name):
+ #we iterate through all nodes, but pick only the ones we need
if osqa_node.node_type != post_type:
continue
+ #cheat: do not import deleted content
+ if '(deleted)' in osqa_node.state_string:
+ continue
+
post = Post()
#this line is a bit risky, but should work if we import things in correct order
if osqa_node.parent:
post.parent = self.get_imported_object_by_old_id(Post, osqa_node.parent)
+ if post.parent is None:
+ continue #deleted parent
post.thread = post.parent.thread
else:
post.thread = self.get_imported_object_by_old_id(Thread, osqa_node.id)
+ if post.thread is None:
+ continue #deleted thread
post.post_type = osqa_node.node_type
post.added_at = osqa_node.added_at
@@ -393,7 +403,7 @@ class Command(BaseImportXMLCommand):
post.summary = post.get_snippet()
#these don't have direct equivalent in the OSQA Node object
- #post.deleted_by
+ #post.deleted_by - deleted nodes are not imported
#post.locked_by
#post.last_edited_by
@@ -405,6 +415,13 @@ class Command(BaseImportXMLCommand):
post.save()
+ #mark accepted answer
+ if osqa_node.node_type == 'answer':
+ if '(accepted)' in osqa_node.state_string:
+ post.thread.accepted_answer = post
+ post.thread.save()
+
+
if save_redirects:
new_url = post.get_absolute_url()
self.write_redirect(old_url, new_url, redirects_file)
@@ -418,6 +435,8 @@ class Command(BaseImportXMLCommand):
"""Imports OSQA revisions to Askbot revisions"""
for osqa_revision in self.get_objects_for_model('forum.noderevision'):
post = self.get_imported_object_by_old_id(Post, osqa_revision.node)
+ if post is None:
+ continue #deleted post
user = self.get_imported_object_by_old_id(User, osqa_revision.author)
revision = PostRevision(
post=post,
@@ -443,6 +462,8 @@ class Command(BaseImportXMLCommand):
"""Imports OSQA votes to Askbot votes"""
for osqa_vote in self.get_objects_for_model('forum.vote'):
post = self.get_imported_object_by_old_id(Post, osqa_vote.node)
+ if post is None:
+ continue #deleted post
user = self.get_imported_object_by_old_id(User, osqa_vote.user)
if osqa_vote.value > 0:
user.upvote(post, timestamp=osqa_vote.voted_at, force=True)