Skip to content

Instantly share code, notes, and snippets.

@diek
Last active July 12, 2021 17:00
Show Gist options
  • Save diek/7936ab59235ac63af57e7d644e49d1b2 to your computer and use it in GitHub Desktop.
Save diek/7936ab59235ac63af57e7d644e49d1b2 to your computer and use it in GitHub Desktop.
from datetime import datetime
from random import randint
import pytz
from django.contrib.auth import get_user_model
from django.core.management.base import BaseCommand
from django.utils import timezone
from faker import Faker
fake = Faker(["en_CA"])
def check_email(*args):
# Needs to check if email exists
first_name, last_name = args
provider_choice = randint(0, 1)
if provider_choice:
provider = fake.domain_name()
else:
provider = fake.free_email_domain()
return f"{first_name.lower()}.{last_name.lower()}@{provider}"
def generate_user():
User = get_user_model()
password = fake.password()
male_female = randint(0, 1)
if male_female:
first_name = fake.first_name_female()
last_name = fake.last_name_female()
else:
first_name = fake.first_name_male()
last_name = fake.last_name_male()
email = check_email(first_name, last_name)
user_name = first_name[:1] + "_" + last_name
# Check if user exists
if User.objects.filter(username=user_name.lower()).exists():
return None
user = User.objects.create_user(
username=user_name.lower(),
email=email,
password=password,
first_name=first_name,
last_name=last_name,
date_joined=datetime(2020, 7, 10, 18, 58, 54, 665547, tzinfo=pytz.utc),
last_login=timezone.now(),
)
return user
class Command(BaseCommand):
help = "Generates x number of users"
def add_arguments(self, parser):
parser.add_argument("total", type=int, help=help)
def handle(self, *args, **kwargs):
total = kwargs["total"]
users_created = 0
is_create_user = True
while is_create_user:
if generate_user():
users_created += 1
if total == users_created:
is_create_user = False
print(f"{total} users successfully added")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment