import random from django.core.management.base import BaseCommand from raffle.models import User, Item, Favorite class Command(BaseCommand): help = 'Pre-populates the database with initial users and items for RigbyRaffle' def handle(self, *args, **kwargs): self.stdout.write('Seeding database...') # 1. Create Auctioneer auctioneer, created = User.objects.get_or_create(username='admin', defaults={'email': 'admin@rigbyraffle.com'}) if created: auctioneer.set_password('admin') auctioneer.is_staff = True auctioneer.is_superuser = True auctioneer.is_auctioneer = True auctioneer.save() self.stdout.write(self.style.SUCCESS('Created Auctioneer (username: admin, password: admin)')) # 2. Create Visitors visitors = [] for i in range(1, 4): visitor, created = User.objects.get_or_create(username=f'visitor{i}', defaults={'email': f'visitor{i}@example.com'}) if created: visitor.set_password('password') visitor.save() visitors.append(visitor) self.stdout.write(self.style.SUCCESS(f'Created {len(visitors)} Visitors (password: password)')) # 3. Create Items items_data = [ {'item_number': '101', 'title': 'Vintage Leather Jacket', 'description': 'A beautiful, timeless vintage leather jacket in superb condition.'}, {'item_number': '102', 'title': 'Handcrafted Wooden Coffee Table', 'description': 'Solid oak handcrafted coffee table with a polished finish.'}, {'item_number': '103', 'title': 'Professional Espresso Machine', 'description': 'High-end barista-grade espresso machine for coffee lovers.'}, {'item_number': '104', 'title': 'Set of 4 Rare Vinyls', 'description': 'A curated collection of rare classic rock vinyl records.'}, {'item_number': '105', 'title': 'Mountain Bike', 'description': '21-speed professional mountain bike, barely used.'}, ] items = [] for data in items_data: item, created = Item.objects.get_or_create(item_number=data['item_number'], defaults=data) items.append(item) self.stdout.write(self.style.SUCCESS(f'Created {len(items)} Items')) # 4. Create Random Favorites for visitor in visitors: # Each visitor favorites 2 random items fav_items = random.sample(items, 2) for item in fav_items: Favorite.objects.get_or_create(user=visitor, item=item) self.stdout.write(self.style.SUCCESS('Database successfully pre-populated!'))