59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
from django.core.management.base import BaseCommand
|
|
from store.models import Game, Set, Card, PackListing, VirtualPack
|
|
import random
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Creates test packs for MTG, Lorcana, and Pokemon'
|
|
|
|
def handle(self, *args, **kwargs):
|
|
games_data = [
|
|
{'name': 'Magic: The Gathering', 'slug': 'mtg', 'pack_price': 4.99},
|
|
{'name': 'Disney Lorcana', 'slug': 'lorcana', 'pack_price': 5.99},
|
|
{'name': 'Pokémon', 'slug': 'pokemon', 'pack_price': 3.99},
|
|
]
|
|
|
|
for game_info in games_data:
|
|
# Lookup by slug since it's unique
|
|
game, _ = Game.objects.get_or_create(
|
|
slug=game_info['slug'],
|
|
defaults={'name': game_info['name']}
|
|
)
|
|
|
|
# Ensure at least one set exists
|
|
set_obj, _ = Set.objects.get_or_create(
|
|
game=game,
|
|
name=f"{game.name} Base Set",
|
|
defaults={'code': 'BASE'}
|
|
)
|
|
|
|
# Ensure cards exist
|
|
if not Card.objects.filter(set__game=game).exists():
|
|
self.stdout.write(f"Creating dummy cards for {game.name}...")
|
|
for i in range(20):
|
|
Card.objects.create(
|
|
set=set_obj,
|
|
name=f"{game.name} Card {i+1}",
|
|
rarity='Common',
|
|
collector_number=str(i+1)
|
|
)
|
|
|
|
# Create Pack Listing
|
|
listing, _ = PackListing.objects.get_or_create(
|
|
game=game,
|
|
name=f"{game.name} Booster Pack",
|
|
defaults={'price': game_info['pack_price']}
|
|
)
|
|
|
|
self.stdout.write(f"Generating packs for {listing.name}...")
|
|
|
|
all_game_cards = list(Card.objects.filter(set__game=game))
|
|
|
|
# Create 10 packs
|
|
for _ in range(10):
|
|
pack = VirtualPack.objects.create(listing=listing)
|
|
# Add 5 random cards
|
|
pack_cards = random.sample(all_game_cards, min(len(all_game_cards), 5))
|
|
pack.cards.set(pack_cards)
|
|
|
|
self.stdout.write(self.style.SUCCESS('Successfully created test packs'))
|