|
@@ -1,77 +1,12 @@
|
|
|
import random
|
|
|
import sys
|
|
|
-from datetime import timedelta
|
|
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
-from django.utils import timezone
|
|
|
from faker import Factory
|
|
|
|
|
|
from ....core.management.progressbar import show_progress
|
|
|
from ....users.models import Ban
|
|
|
-
|
|
|
-
|
|
|
-def fake_username_ban(fake):
|
|
|
- fake_value = fake.first_name()
|
|
|
-
|
|
|
- if random.randint(0, 100) < 31:
|
|
|
- fake_value = "%s*" % fake_value
|
|
|
- elif random.randint(0, 100) < 31:
|
|
|
- fake_value = "*%s" % fake_value
|
|
|
- elif random.randint(0, 100) < 31:
|
|
|
- fake_value = list(fake_value)
|
|
|
- fake_value.insert(random.randint(0, len(fake_value) - 1), "*")
|
|
|
- fake_value = "".join(fake_value)
|
|
|
-
|
|
|
- return fake_value
|
|
|
-
|
|
|
-
|
|
|
-def fake_email_ban(fake):
|
|
|
- if random.randint(0, 100) < 35:
|
|
|
- return "*@%s" % fake.domain_name()
|
|
|
- return fake.email()
|
|
|
-
|
|
|
-
|
|
|
-def fake_ip_ban(fake):
|
|
|
- if random.randint(0, 1):
|
|
|
- fake_value = fake.ipv4()
|
|
|
- if random.randint(0, 100) < 35:
|
|
|
- fake_value = fake_value.split(".")
|
|
|
- fake_value = ".".join(fake_value[: random.randint(1, 3)])
|
|
|
- fake_value = "%s.*" % fake_value
|
|
|
- elif random.randint(0, 100) < 35:
|
|
|
- fake_value = fake_value.split(".")
|
|
|
- fake_value = ".".join(fake_value[random.randint(1, 3) :])
|
|
|
- fake_value = "*.%s" % fake_value
|
|
|
- elif random.randint(0, 100) < 35:
|
|
|
- fake_value = fake_value.split(".")
|
|
|
- fake_value[random.randint(0, 3)] = "*"
|
|
|
- fake_value = ".".join(fake_value)
|
|
|
- else:
|
|
|
- fake_value = fake.ipv6()
|
|
|
-
|
|
|
- if random.randint(0, 100) < 35:
|
|
|
- fake_value = fake_value.split(":")
|
|
|
- fake_value = ":".join(fake_value[: random.randint(1, 7)])
|
|
|
- fake_value = "%s:*" % fake_value
|
|
|
- elif random.randint(0, 100) < 35:
|
|
|
- fake_value = fake_value.split(":")
|
|
|
- fake_value = ":".join(fake_value[: random.randint(1, 7)])
|
|
|
- fake_value = "*:%s" % fake_value
|
|
|
- elif random.randint(0, 100) < 35:
|
|
|
- fake_value = fake_value.split(":")
|
|
|
- fake_value[random.randint(0, 7)] = "*"
|
|
|
- fake_value = ":".join(fake_value)
|
|
|
-
|
|
|
- return fake_value
|
|
|
-
|
|
|
-
|
|
|
-def create_fake_test(fake, test_type):
|
|
|
- if test_type == Ban.USERNAME:
|
|
|
- return fake_username_ban(fake)
|
|
|
- if test_type == Ban.EMAIL:
|
|
|
- return fake_email_ban(fake)
|
|
|
- if test_type == Ban.IP:
|
|
|
- return fake_ip_ban(fake)
|
|
|
+from ...bans import get_fake_username_ban, get_fake_email_ban, get_fake_ip_ban
|
|
|
|
|
|
|
|
|
class Command(BaseCommand):
|
|
@@ -87,6 +22,7 @@ class Command(BaseCommand):
|
|
|
sys.exit(1)
|
|
|
|
|
|
fake = Factory.create()
|
|
|
+ ban_fakers = (get_fake_username_ban, get_fake_email_ban, get_fake_ip_ban)
|
|
|
|
|
|
message = "Creating %s fake bans...\n"
|
|
|
self.stdout.write(message % fake_bans_to_create)
|
|
@@ -94,27 +30,13 @@ class Command(BaseCommand):
|
|
|
created_count = 0
|
|
|
show_progress(self, created_count, fake_bans_to_create)
|
|
|
for _ in range(fake_bans_to_create):
|
|
|
- ban = Ban(check_type=random.randint(Ban.USERNAME, Ban.IP))
|
|
|
- ban.banned_value = create_fake_test(fake, ban.check_type)
|
|
|
-
|
|
|
- if random.randint(0, 10) == 0:
|
|
|
- ban.user_message = fake.sentence()
|
|
|
-
|
|
|
- if random.randint(0, 10) == 0:
|
|
|
- ban.staff_message = fake.sentence()
|
|
|
-
|
|
|
- if random.randint(0, 1):
|
|
|
- # Lets make ban temporary
|
|
|
- ban_length = timedelta(days=random.randint(0, 300))
|
|
|
- if random.randint(0, 1):
|
|
|
- ban.valid_until = timezone.now().date() - ban_length
|
|
|
- else:
|
|
|
- ban.valid_until = timezone.now().date() + ban_length
|
|
|
-
|
|
|
- ban.save()
|
|
|
+ ban_faker = random.choice(ban_fakers)
|
|
|
+ ban_faker(fake)
|
|
|
|
|
|
created_count += 1
|
|
|
show_progress(self, created_count, fake_bans_to_create)
|
|
|
|
|
|
+ Ban.objects.invalidate_cache()
|
|
|
+
|
|
|
message = "\n\nSuccessfully created %s fake bans"
|
|
|
self.stdout.write(message % created_count)
|