Inital commit
This commit is contained in:
55
splitchat/core/management/commands/create_demo.py
Normal file
55
splitchat/core/management/commands/create_demo.py
Normal file
@@ -0,0 +1,55 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.contrib.auth.models import User
|
||||
from core.models import ChatRoom, Membership, Event, Expense, ExpenseSplit, UserProfile
|
||||
from decimal import Decimal
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Create demo data for testing'
|
||||
|
||||
def handle(self, *args, **kwargs):
|
||||
# Users
|
||||
alice, _ = User.objects.get_or_create(username='alice', defaults={'email': 'alice@example.com', 'first_name': 'Alice'})
|
||||
alice.set_password('demo1234')
|
||||
alice.save()
|
||||
UserProfile.objects.update_or_create(user=alice, defaults={'avatar_color': '#6366f1'})
|
||||
|
||||
bob, _ = User.objects.get_or_create(username='bob', defaults={'email': 'bob@example.com', 'first_name': 'Bob'})
|
||||
bob.set_password('demo1234')
|
||||
bob.save()
|
||||
UserProfile.objects.update_or_create(user=bob, defaults={'avatar_color': '#ec4899'})
|
||||
|
||||
carol, _ = User.objects.get_or_create(username='carol', defaults={'email': 'carol@example.com', 'first_name': 'Carol'})
|
||||
carol.set_password('demo1234')
|
||||
carol.save()
|
||||
UserProfile.objects.update_or_create(user=carol, defaults={'avatar_color': '#22c55e'})
|
||||
|
||||
# Room
|
||||
room, _ = ChatRoom.objects.get_or_create(name='Weekend Trip 🏕️', defaults={
|
||||
'description': 'Planning our camping trip!',
|
||||
'created_by': alice,
|
||||
})
|
||||
for user, admin in [(alice, True), (bob, False), (carol, False)]:
|
||||
Membership.objects.get_or_create(user=user, room=room, defaults={'is_admin': admin})
|
||||
|
||||
# Event
|
||||
event, _ = Event.objects.get_or_create(title='Camping Supplies Run', defaults={
|
||||
'room': room, 'created_by': alice,
|
||||
'description': 'Buying supplies for the trip',
|
||||
'location': 'REI Downtown',
|
||||
})
|
||||
|
||||
if not event.expenses.exists():
|
||||
e1 = Expense.objects.create(event=event, description='Tent & Sleeping bags',
|
||||
amount=Decimal('120.00'), paid_by=alice, split_type='equal')
|
||||
for u in [alice, bob, carol]:
|
||||
ExpenseSplit.objects.create(expense=e1, user=u, amount=Decimal('40.00'))
|
||||
|
||||
e2 = Expense.objects.create(event=event, description='Food & Snacks',
|
||||
amount=Decimal('75.00'), paid_by=bob, split_type='equal')
|
||||
for u in [alice, bob, carol]:
|
||||
ExpenseSplit.objects.create(expense=e2, user=u, amount=Decimal('25.00'))
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(
|
||||
f'Demo created! Login: alice/demo1234, bob/demo1234, carol/demo1234\n'
|
||||
f'Room invite code: {room.invite_code}'
|
||||
))
|
||||
Reference in New Issue
Block a user