diff options
-rw-r--r-- | askbot/management/commands/find_bodyless_questions.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/askbot/management/commands/find_bodyless_questions.py b/askbot/management/commands/find_bodyless_questions.py new file mode 100644 index 00000000..75312620 --- /dev/null +++ b/askbot/management/commands/find_bodyless_questions.py @@ -0,0 +1,44 @@ +"""this management commands will fix corrupted posts +that do not have revisions by creating a fake initial revision +based on the content stored in the post itself +""" +from django.core.management.base import NoArgsCommand +from askbot import models +from askbot import const +from askbot.utils.console import ProgressBar + +def print_results(items): + template = 'id=%d, title=%s' + for thread in items: + print template % (thread.id, thread.title.encode('utf8')) + +class Command(NoArgsCommand): + """Command class for "fix_bodyless_questions" + """ + def handle(self, *arguments, **options): + """function that handles the command job + """ + threads = models.Thread.objects.all() + count = threads.count() + message = 'Looking for body-less questions' + bodyless = list() + multi_body = list() + for thread in ProgressBar(threads.iterator(), count, message): + body_count = models.Post.objects.filter( + thread=thread, + post_type='question', + ).count() + if body_count == 0: + bodyless.append(thread) + elif body_count > 1: + multi_body.append(thread) + + if len(bodyless) + len(multi_body) == 0: + print 'None found.' + else: + if len(bodyless): + print '\nQuestions without body text:' + print_results(bodyless) + if len(multi_body): + print '\nQuestions with >1 instances of body text' + print_results(multi_body) |