Refactored 'create_teams_fixture'
This commit is contained in:
parent
73c55fc301
commit
96e0f7960f
@ -3,8 +3,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"first_name": "Michael",
|
||||
"last_name": "Jewett",
|
||||
"first_name": "Shaquita",
|
||||
"last_name": "Nichols",
|
||||
"team": 1,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -13,8 +13,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 2,
|
||||
"fields": {
|
||||
"first_name": "Robert",
|
||||
"last_name": "Kearns",
|
||||
"first_name": "Tawanna",
|
||||
"last_name": "Kingsbury",
|
||||
"team": 1,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -23,8 +23,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 3,
|
||||
"fields": {
|
||||
"first_name": "Jack",
|
||||
"last_name": "Colon",
|
||||
"first_name": "Ricardo",
|
||||
"last_name": "Benton",
|
||||
"team": 1,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -33,8 +33,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 4,
|
||||
"fields": {
|
||||
"first_name": "Nina",
|
||||
"last_name": "Freeman",
|
||||
"first_name": "David",
|
||||
"last_name": "Moore",
|
||||
"team": 2,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -43,8 +43,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 5,
|
||||
"fields": {
|
||||
"first_name": "Josephine",
|
||||
"last_name": "Mcdonald",
|
||||
"first_name": "Patricia",
|
||||
"last_name": "Mader",
|
||||
"team": 2,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -53,8 +53,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 6,
|
||||
"fields": {
|
||||
"first_name": "Don",
|
||||
"last_name": "Wrape",
|
||||
"first_name": "Sue",
|
||||
"last_name": "Coleman",
|
||||
"team": 2,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -63,8 +63,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 7,
|
||||
"fields": {
|
||||
"first_name": "Audrey",
|
||||
"last_name": "Mcguire",
|
||||
"first_name": "Brandon",
|
||||
"last_name": "Goodwin",
|
||||
"team": 3,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -73,8 +73,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 8,
|
||||
"fields": {
|
||||
"first_name": "Morris",
|
||||
"last_name": "Delker",
|
||||
"first_name": "Travis",
|
||||
"last_name": "Walls",
|
||||
"team": 3,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -83,8 +83,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 9,
|
||||
"fields": {
|
||||
"first_name": "Keith",
|
||||
"last_name": "Cline",
|
||||
"first_name": "Donna",
|
||||
"last_name": "Sanders",
|
||||
"team": 3,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -93,8 +93,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 10,
|
||||
"fields": {
|
||||
"first_name": "Vincent",
|
||||
"last_name": "Alconcel",
|
||||
"first_name": "Debra",
|
||||
"last_name": "Lu",
|
||||
"team": 4,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -103,8 +103,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 11,
|
||||
"fields": {
|
||||
"first_name": "Leroy",
|
||||
"last_name": "Gibson",
|
||||
"first_name": "Edwin",
|
||||
"last_name": "Goldberger",
|
||||
"team": 4,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -113,8 +113,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 12,
|
||||
"fields": {
|
||||
"first_name": "Ronald",
|
||||
"last_name": "Ross",
|
||||
"first_name": "Peggy",
|
||||
"last_name": "Lane",
|
||||
"team": 4,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -123,8 +123,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 13,
|
||||
"fields": {
|
||||
"first_name": "Dennis",
|
||||
"last_name": "Thompson",
|
||||
"first_name": "Dora",
|
||||
"last_name": "Eye",
|
||||
"team": 5,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -133,8 +133,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 14,
|
||||
"fields": {
|
||||
"first_name": "Clarence",
|
||||
"last_name": "Nieto",
|
||||
"first_name": "Christopher",
|
||||
"last_name": "Delap",
|
||||
"team": 5,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -143,8 +143,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 15,
|
||||
"fields": {
|
||||
"first_name": "Trena",
|
||||
"last_name": "Robbins",
|
||||
"first_name": "John",
|
||||
"last_name": "Reyes",
|
||||
"team": 5,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -153,8 +153,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 16,
|
||||
"fields": {
|
||||
"first_name": "Karen",
|
||||
"last_name": "Vessell",
|
||||
"first_name": "Robert",
|
||||
"last_name": "Reveles",
|
||||
"team": 6,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -163,8 +163,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 17,
|
||||
"fields": {
|
||||
"first_name": "Herb",
|
||||
"last_name": "Mcgowan",
|
||||
"first_name": "Cheryl",
|
||||
"last_name": "Jones",
|
||||
"team": 6,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -173,8 +173,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 18,
|
||||
"fields": {
|
||||
"first_name": "Jimmie",
|
||||
"last_name": "Rittenhouse",
|
||||
"first_name": "Anne",
|
||||
"last_name": "Thomas",
|
||||
"team": 6,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -183,8 +183,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 19,
|
||||
"fields": {
|
||||
"first_name": "Lewis",
|
||||
"last_name": "Queener",
|
||||
"first_name": "Erika",
|
||||
"last_name": "Dolfi",
|
||||
"team": 7,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -193,8 +193,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 20,
|
||||
"fields": {
|
||||
"first_name": "Nancy",
|
||||
"last_name": "Merritt",
|
||||
"first_name": "Scott",
|
||||
"last_name": "Hines",
|
||||
"team": 7,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -203,8 +203,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 21,
|
||||
"fields": {
|
||||
"first_name": "Elaine",
|
||||
"last_name": "Foss",
|
||||
"first_name": "Min",
|
||||
"last_name": "Baker",
|
||||
"team": 7,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -213,8 +213,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 22,
|
||||
"fields": {
|
||||
"first_name": "Natasha",
|
||||
"last_name": "Perkins",
|
||||
"first_name": "Laura",
|
||||
"last_name": "Cleaves",
|
||||
"team": 8,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -223,8 +223,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 23,
|
||||
"fields": {
|
||||
"first_name": "Dean",
|
||||
"last_name": "Carroll",
|
||||
"first_name": "Deborah",
|
||||
"last_name": "Pence",
|
||||
"team": 8,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -233,8 +233,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 24,
|
||||
"fields": {
|
||||
"first_name": "Lauren",
|
||||
"last_name": "Carter",
|
||||
"first_name": "Harvey",
|
||||
"last_name": "Cabello",
|
||||
"team": 8,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -243,8 +243,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 25,
|
||||
"fields": {
|
||||
"first_name": "Robert",
|
||||
"last_name": "Orr",
|
||||
"first_name": "Shawn",
|
||||
"last_name": "Mabe",
|
||||
"team": 9,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -253,8 +253,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 26,
|
||||
"fields": {
|
||||
"first_name": "Deborah",
|
||||
"last_name": "Johnson",
|
||||
"first_name": "Donald",
|
||||
"last_name": "Duryea",
|
||||
"team": 9,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -263,8 +263,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 27,
|
||||
"fields": {
|
||||
"first_name": "Helen",
|
||||
"last_name": "Henry",
|
||||
"first_name": "John",
|
||||
"last_name": "Mcinturff",
|
||||
"team": 9,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -273,8 +273,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 28,
|
||||
"fields": {
|
||||
"first_name": "Linda",
|
||||
"last_name": "Armstrong",
|
||||
"first_name": "Ivette",
|
||||
"last_name": "Paterson",
|
||||
"team": 10,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -283,8 +283,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 29,
|
||||
"fields": {
|
||||
"first_name": "Tricia",
|
||||
"last_name": "Charles",
|
||||
"first_name": "Mary",
|
||||
"last_name": "Sussman",
|
||||
"team": 10,
|
||||
"peg_number": null
|
||||
}
|
||||
@ -293,8 +293,8 @@
|
||||
"model": "mainapp.member",
|
||||
"pk": 30,
|
||||
"fields": {
|
||||
"first_name": "Cortney",
|
||||
"last_name": "Hogan",
|
||||
"first_name": "Peter",
|
||||
"last_name": "Faison",
|
||||
"team": 10,
|
||||
"peg_number": null
|
||||
}
|
||||
|
@ -1,72 +1,72 @@
|
||||
[
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"section_letter": "A"
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"section_letter": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 2,
|
||||
"fields": {
|
||||
"section_letter": "C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 3,
|
||||
"fields": {
|
||||
"section_letter": "Y"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 4,
|
||||
"fields": {
|
||||
"section_letter": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 5,
|
||||
"fields": {
|
||||
"section_letter": "T"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 6,
|
||||
"fields": {
|
||||
"section_letter": "K"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 7,
|
||||
"fields": {
|
||||
"section_letter": "N"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 8,
|
||||
"fields": {
|
||||
"section_letter": "S"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 9,
|
||||
"fields": {
|
||||
"section_letter": "Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 10,
|
||||
"fields": {
|
||||
"section_letter": "U"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 2,
|
||||
"fields": {
|
||||
"section_letter": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 3,
|
||||
"fields": {
|
||||
"section_letter": "C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 4,
|
||||
"fields": {
|
||||
"section_letter": "D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 5,
|
||||
"fields": {
|
||||
"section_letter": "E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 6,
|
||||
"fields": {
|
||||
"section_letter": "F"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 7,
|
||||
"fields": {
|
||||
"section_letter": "G"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 8,
|
||||
"fields": {
|
||||
"section_letter": "H"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 9,
|
||||
"fields": {
|
||||
"section_letter": "J"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "mainapp.team",
|
||||
"pk": 10,
|
||||
"fields": {
|
||||
"section_letter": "K"
|
||||
}
|
||||
}
|
||||
]
|
@ -5,6 +5,8 @@ from django.core.management.base import BaseCommand
|
||||
from mainapp.models import Member, Team
|
||||
|
||||
|
||||
# TODO: refactor this file like create_teams_fixtures.py
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Creates a fixture with randomly generated Member objects"
|
||||
|
||||
|
@ -1,3 +1,6 @@
|
||||
"""Command to create test data fixture for teams."""
|
||||
|
||||
import random
|
||||
import json
|
||||
from string import ascii_uppercase
|
||||
|
||||
@ -5,61 +8,57 @@ from django.core.management.base import BaseCommand
|
||||
from django.db.utils import IntegrityError
|
||||
from mainapp.models import Team, BLOCKED_SECTION_LETTERS
|
||||
|
||||
for char in BLOCKED_SECTION_LETTERS:
|
||||
ascii_uppercase = ascii_uppercase.replace(char.upper(), "")
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Creates a fixture file for Team objects"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("num_teams", type=int, help="Number of teams to create")
|
||||
parser.add_argument("amount_of_teams", type=int, help="Number of teams to create")
|
||||
|
||||
def handle(self, *args, **options):
|
||||
num_teams = options["num_teams"]
|
||||
limit = len(ascii_uppercase)
|
||||
|
||||
if num_teams > limit:
|
||||
self.stdout.write(self.style.ERROR(f"Number of teams is too large [{num_teams}/{limit}]."))
|
||||
existing_teams = Team.objects.all()
|
||||
|
||||
# Available sections
|
||||
available_sections = [
|
||||
char for char in [*ascii_uppercase]
|
||||
if char.lower() not in BLOCKED_SECTION_LETTERS
|
||||
and char not in [team.section_letter for team in existing_teams]
|
||||
]
|
||||
|
||||
if not available_sections:
|
||||
self.stdout.write(self.style.ERROR(
|
||||
f"There are no available sections for new teams."
|
||||
))
|
||||
return
|
||||
|
||||
# this code is so shit
|
||||
# reminder to please rewrite this please
|
||||
teams = []
|
||||
iteration = 0
|
||||
errors = 0
|
||||
while iteration < num_teams:
|
||||
try:
|
||||
team = Team.objects.create(section_letter=ascii_uppercase[iteration])
|
||||
except IntegrityError as err:
|
||||
self.stdout.write(self.style.ERROR(err))
|
||||
errors += 1
|
||||
if errors > limit:
|
||||
break # heavy nesting: not good
|
||||
teams_amount = options["amount_of_teams"]
|
||||
max_teams = len(available_sections)
|
||||
|
||||
iteration += 1
|
||||
teams.append(team)
|
||||
|
||||
if not teams: # TODO: error message
|
||||
self.stdout.write(self.style.ERROR(f"Couldn't make teams -> ask corban because im too lazy to write an error message right now."))
|
||||
if teams_amount > max_teams:
|
||||
self.stdout.write(self.style.ERROR(
|
||||
f"Number of teams is too large [{teams_amount}/{max_teams}]."
|
||||
))
|
||||
return
|
||||
|
||||
for team in teams:
|
||||
self.stdout.write(self.style.SUCCESS(f"Created team {team.team_number}"))
|
||||
# Create the new teams (this will create them in the database)#
|
||||
new_teams = []
|
||||
for i in range(teams_amount):
|
||||
section_letter = random.choice(available_sections)
|
||||
available_sections.remove(section_letter)
|
||||
team = Team.objects.create(section_letter=section_letter)
|
||||
new_teams.append(team)
|
||||
|
||||
filename = f"src/mainapp/fixtures/teams_fixture.json"
|
||||
teams_fixture = [{
|
||||
"model": "mainapp.team",
|
||||
"pk": team.pk,
|
||||
"fields": {"section_letter": team.section_letter}
|
||||
} for team in new_teams]
|
||||
|
||||
teams_fixture = []
|
||||
for team in teams:
|
||||
team_fixture = {
|
||||
"model": "mainapp.team",
|
||||
"pk": team.pk,
|
||||
"fields": {
|
||||
"section_letter": team.section_letter
|
||||
}
|
||||
}
|
||||
teams_fixture.append(team_fixture)
|
||||
# Remove the teams from the database
|
||||
for team in new_teams:
|
||||
team.delete()
|
||||
|
||||
with open(filename, "w") as f:
|
||||
f.write(json.dumps(teams_fixture, indent=2))
|
||||
with open("src/mainapp/fixtures/teams_fixture.json", "w") as file:
|
||||
file.write(json.dumps(teams_fixture, indent=4))
|
||||
self.stdout.write(self.style.SUCCESS("Created teams_fixture.json."))
|
||||
|
Loading…
x
Reference in New Issue
Block a user