Browse Source

Progressbar for fake factories

Rafał Pitoń 11 years ago
parent
commit
50fad63960

+ 9 - 0
misago/core/management/progressbar.py

@@ -0,0 +1,9 @@
+def show_progress(command, step, total):
+    progress = step * 100 / total
+    filled = progress / 2
+    blank = 50 - filled
+
+    line = '\r%s%% [%s%s]'
+    rendered_line = line % (str(progress).rjust(3), '=' * filled, ' ' * blank)
+    command.stdout.write(rendered_line, ending='')
+    command.stdout.flush()

+ 8 - 5
misago/faker/management/commands/createfakebans.py

@@ -6,7 +6,10 @@ from django.core.exceptions import ValidationError
 from django.core.management.base import BaseCommand
 from django.core.management.base import BaseCommand
 from django.db import IntegrityError
 from django.db import IntegrityError
 from django.utils import timezone
 from django.utils import timezone
+
 from faker import Factory
 from faker import Factory
+
+from misago.core.management.progressbar import show_progress
 from misago.users.models import Ban, BAN_USERNAME, BAN_EMAIL, BAN_IP
 from misago.users.models import Ban, BAN_USERNAME, BAN_EMAIL, BAN_IP
 
 
 
 
@@ -89,13 +92,14 @@ class Command(BaseCommand):
 
 
         fake = Factory.create()
         fake = Factory.create()
 
 
-        message = 'Attempting to create %s fake bans!'
+        message = 'Creating %s fake bans...\n'
         self.stdout.write(message % fake_bans_to_create)
         self.stdout.write(message % fake_bans_to_create)
 
 
-        message = 'Successfully created %s fake bans!'
+        message = '\n\nSuccessfully created %s fake bans'
 
 
         created_count = 0
         created_count = 0
-        for i in xrange(fake_bans_to_create + 1):
+        show_progress(self, created_count, fake_bans_to_create)
+        for i in xrange(fake_bans_to_create):
             ban = Ban(test=random.randint(BAN_USERNAME, BAN_IP))
             ban = Ban(test=random.randint(BAN_USERNAME, BAN_IP))
             ban.banned_value = create_fake_test(fake, ban.test)
             ban.banned_value = create_fake_test(fake, ban.test)
 
 
@@ -116,7 +120,6 @@ class Command(BaseCommand):
             ban.save()
             ban.save()
 
 
             created_count += 1
             created_count += 1
-            if (created_count * 100 / fake_bans_to_create) % 10 == 0:
-                self.stdout.write(message % created_count)
+            show_progress(self, created_count, fake_bans_to_create)
 
 
         self.stdout.write(message % created_count)
         self.stdout.write(message % created_count)

+ 8 - 5
misago/faker/management/commands/createfakeusers.py

@@ -4,7 +4,10 @@ from django.contrib.auth import get_user_model
 from django.core.exceptions import ValidationError
 from django.core.exceptions import ValidationError
 from django.core.management.base import BaseCommand
 from django.core.management.base import BaseCommand
 from django.db import IntegrityError
 from django.db import IntegrityError
+
 from faker import Factory
 from faker import Factory
+
+from misago.core.management.progressbar import show_progress
 from misago.users.models import Rank
 from misago.users.models import Rank
 
 
 
 
@@ -25,13 +28,14 @@ class Command(BaseCommand):
 
 
         ranks = [r for r in Rank.objects.all()]
         ranks = [r for r in Rank.objects.all()]
 
 
-        message = 'Attempting to create %s fake user accounts!'
+        message = 'Creating %s fake user accounts...\n'
         self.stdout.write(message % fake_users_to_create)
         self.stdout.write(message % fake_users_to_create)
 
 
-        message = 'Successfully created %s fake user accounts!'
+        message = '\n\nSuccessfully created %s fake user accounts'
 
 
         created_count = 0
         created_count = 0
-        for i in xrange(fake_users_to_create + 1):
+        show_progress(self, created_count, fake_users_to_create)
+        for i in xrange(fake_users_to_create):
             try:
             try:
                 kwargs = {
                 kwargs = {
                     'rank': random.choice(ranks),
                     'rank': random.choice(ranks),
@@ -44,7 +48,6 @@ class Command(BaseCommand):
                 pass
                 pass
             else:
             else:
                 created_count += 1
                 created_count += 1
-                if (created_count * 100 / fake_users_to_create) % 10 == 0:
-                    self.stdout.write(message % created_count)
+                show_progress(self, created_count, fake_users_to_create)
 
 
         self.stdout.write(message % created_count)
         self.stdout.write(message % created_count)