Programmatically generate seed data
This commit is contained in:
parent
bcf65157d0
commit
a9c51a14a4
|
@ -1,51 +1,71 @@
|
||||||
from server.api.models import Transaction, Account, User, Stack
|
from server.api.models import Transaction, Account, User, Stack
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import itertools
|
||||||
|
import random
|
||||||
|
random.seed(123)
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
help = "Seed database for dev"
|
help = 'Seed database for dev'
|
||||||
|
|
||||||
def handle(self, *args, **options):
|
def handle(self, *args, **options):
|
||||||
self.stdout.write('clearing and seeding database...')
|
self.stdout.write('Clearing and seeding database...')
|
||||||
|
|
||||||
# create test users
|
|
||||||
User.objects.all().delete()
|
User.objects.all().delete()
|
||||||
elijah = User(username="elijah",
|
elijah = User.objects.create(username='elijah', email='elijah@westwinds.io', password='toffee15')
|
||||||
email="elijah@westwinds.io",
|
ievgen = User.objects.create(username='ievgen', email='ievgen@westwinds.io', password='toffee15')
|
||||||
password="toffee15").save()
|
tanner = User.objects.create(username='tanner', email='tanner@westwinds.io', password='toffee15')
|
||||||
ievgen = User(username="ievgen",
|
|
||||||
email="ievgen@westwinds.io",
|
|
||||||
password="toffee15").save()
|
|
||||||
tanner = User(username="tanner",
|
|
||||||
email="tanner@westwinds.io",
|
|
||||||
password="toffee15").save()
|
|
||||||
|
|
||||||
self.stdout.write(str(User.objects.all()))
|
self.stdout.write(str(User.objects.all()))
|
||||||
self.stdout.write('Users Created!')
|
self.stdout.write('{} users created!'.format(User.objects.count()))
|
||||||
|
|
||||||
|
|
||||||
# create an account that all 3 users are attached to
|
|
||||||
Account.objects.all().delete()
|
Account.objects.all().delete()
|
||||||
home = Account(name="home", details="home stacks",
|
|
||||||
income=4000, expenses=2000).save()
|
|
||||||
|
|
||||||
self.stdout.write(str(Account.objects.all()))
|
|
||||||
self.stdout.write('Accounts Created!')
|
|
||||||
|
|
||||||
# create test stacks for account
|
|
||||||
Stack.objects.all().delete()
|
Stack.objects.all().delete()
|
||||||
groceries = Stack(name="Groceries",
|
|
||||||
details="",
|
|
||||||
amount=800).save()
|
|
||||||
|
|
||||||
takeout = Stack(name="Date Nights",
|
|
||||||
details="",
|
|
||||||
amount=400).save()
|
|
||||||
|
|
||||||
shit = Stack(name="Crap",
|
|
||||||
details="",
|
|
||||||
amount=500).save()
|
|
||||||
|
|
||||||
Transaction.objects.all().delete()
|
Transaction.objects.all().delete()
|
||||||
# generate transaction history
|
account_count = 1
|
||||||
|
|
||||||
|
self.stdout.ending = ''
|
||||||
|
self.stdout.write('Populating data')
|
||||||
|
|
||||||
|
for length in range(1,4):
|
||||||
|
for users in itertools.combinations([elijah, ievgen, tanner], length):
|
||||||
|
income = random.randint(2000,4000)
|
||||||
|
expenses = random.randint(1000, income)
|
||||||
|
|
||||||
|
account = Account.objects.create(
|
||||||
|
name='Account #{}'.format(account_count),
|
||||||
|
details='Belongs to {}'.format(', '.join([u.username for u in users])),
|
||||||
|
income=income,
|
||||||
|
expenses=expenses,
|
||||||
|
)
|
||||||
|
account.users.set(users)
|
||||||
|
account.save()
|
||||||
|
|
||||||
|
for stack_num in range(1, random.randint(2, 7)):
|
||||||
|
stack = Stack.objects.create(
|
||||||
|
account=account,
|
||||||
|
name='Stack #{}'.format(stack_num),
|
||||||
|
details='Belongs to account #{}'.format(account_count),
|
||||||
|
amount=random.randint(100, expenses),
|
||||||
|
)
|
||||||
|
|
||||||
|
for tx_num in range(1, random.randint(2, 50)):
|
||||||
|
tx = Transaction.objects.create(
|
||||||
|
stack=stack,
|
||||||
|
#name='Transaction #{}'.format(tx_num),
|
||||||
|
details='Belongs to stack #{}'.format(stack_num),
|
||||||
|
amount=random.randint(1, 100),
|
||||||
|
)
|
||||||
|
|
||||||
|
self.stdout.write('.')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
account_count += 1
|
||||||
|
|
||||||
|
self.stdout.ending = '\n'
|
||||||
|
self.stdout.write('')
|
||||||
|
self.stdout.write('{} accounts created!'.format(Account.objects.count()))
|
||||||
|
|
||||||
self.stdout.write('done!')
|
self.stdout.write('done!')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user