69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
import random
|
|
import names
|
|
import json
|
|
from django.core.management.base import BaseCommand
|
|
from mainapp.models import Member, Team
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Creates a fixture with randomly generated Member objects"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("num_members", type=int)
|
|
|
|
def handle(self, *args, **options):
|
|
num_members = options["num_members"]
|
|
teams = Team.objects.all()
|
|
if not teams:
|
|
print("No teams found. Please create some teams first.")
|
|
return
|
|
|
|
members = []
|
|
for team in teams:
|
|
for _ in range(num_members):
|
|
first_name = names.get_first_name()
|
|
last_name = names.get_last_name()
|
|
member = Member(first_name=first_name, last_name=last_name, team=team)
|
|
members.append(member)
|
|
|
|
Member.objects.bulk_create(members)
|
|
|
|
self.stdout.write(self.style.SUCCESS(f"Created {num_members} members."))
|
|
|
|
|
|
# create a team fixture file
|
|
teams_fixture = []
|
|
for team in teams:
|
|
team_fixture = {
|
|
"model": "mainapp.team",
|
|
"pk": team.pk,
|
|
"fields": {
|
|
"team_number": team.team_number,
|
|
"section": team.section_id
|
|
}
|
|
}
|
|
teams_fixture.append(team_fixture)
|
|
|
|
with open("src/mainapp/fixtures/teams_fixture.json", "w") as f:
|
|
f.write(json.dumps(teams_fixture, indent=2))
|
|
self.stdout.write(self.style.SUCCESS("Created teams_fixture.json."))
|
|
|
|
|
|
# create a members fixture file
|
|
members_fixture = []
|
|
for member in members:
|
|
member_fixture = {
|
|
"model": "mainapp.member",
|
|
"pk": member.pk,
|
|
"fields": {
|
|
"first_name": member.first_name,
|
|
"last_name": member.last_name,
|
|
"team": member.team_id
|
|
}
|
|
}
|
|
members_fixture.append(member_fixture)
|
|
|
|
with open("src/mainapp/fixtures/members_fixture.json", "w") as f:
|
|
f.write(json.dumps(members_fixture, indent=2))
|
|
self.stdout.write(self.style.SUCCESS("Created members_fixture.json."))
|