diff gpp/ygroup/management/commands/sync_ygroup_threads.py @ 323:0c18dfb1da1c

Fixing #149; adding the ygroup application: an archive of the old Yahoo Group messages.
author Brian Neal <bgneal@gmail.com>
date Sun, 20 Feb 2011 00:31:54 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gpp/ygroup/management/commands/sync_ygroup_threads.py	Sun Feb 20 00:31:54 2011 +0000
@@ -0,0 +1,39 @@
+"""
+sync_ygroup_threads.py - A management command to synchronize the yahoo group
+archives by recomputing the de-normalized fields in the thread objects.
+
+"""
+import optparse
+
+from django.core.management.base import NoArgsCommand, CommandError
+
+from ygroup.models import Thread, Post
+import ygroup.views
+
+
+class Command(NoArgsCommand):
+    help = """\
+This command synchronizes the ygroup application's thread objects
+by updating their de-normalized fields.
+"""
+    option_list = NoArgsCommand.option_list + (
+        optparse.make_option("-p", "--progress", action="store_true",
+            help="Output a . after every 50 threads to show progress"),
+    )
+
+    def handle_noargs(self, **opts):
+
+        show_progress = opts.get('progress', False) or False
+
+        n = 0
+        for thread in Thread.objects.iterator():
+            thread.post_count = Post.objects.filter(thread=thread).count()
+            thread.page = n / ygroup.views.THREADS_PER_PAGE + 1
+            thread.save()
+            n += 1
+            if n % 50 == 0:
+                self.stdout.write('.')
+                self.stdout.flush()
+
+        self.stdout.write('\n')
+