54 lines
2.6 KiB
Python
54 lines
2.6 KiB
Python
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!'))
|