import datetime
import random
from django.core.management.base import BaseCommand
from accounts.models import Header, Account
from entries.models import (Transaction, JournalEntry, BankSpendingEntry,
BankReceivingEntry)
[docs]def get_random_account():
return Account.objects.all()[random.randint(0, 9)]
[docs]def get_random_bank():
return Account.objects.get_banks()[random.randint(0, 1)]
[docs]class Command(BaseCommand):
args = ''
help = 'Generate mass random data'
[docs] def handle(self, *args, **options):
if Header.objects.count() == 0:
asset_head = Header.objects.create(name='Asset', type=1, slug='asset')
fixed_asset = Header.objects.create(name='Fixed-Asset', slug='fixed-asset', parent=asset_head)
bank_accounts = Header.objects.create(name='Bank Accounts', slug='bank-accounts', parent=fixed_asset)
liabilities = Header.objects.create(name='Liabilities', type=2, slug='liability')
stipends = Header.objects.create(name='Member Stipends', slug='member-stipends', parent=liabilities)
expense = Header.objects.create(name='Expense', type=6, slug='expense')
misc_expense = Header.objects.create(name='Misc Expenses', slug='misc-expense', parent=expense)
Account.objects.create(name='Heartwood', balance=0, slug='heartwood', parent=fixed_asset)
Account.objects.create(name='VCB Checking', bank=True, balance=0, slug='vcb-checking', parent=bank_accounts)
Account.objects.create(name='VCB Savings', bank=True, balance=0, slug='vcb-savings', parent=bank_accounts)
Account.objects.create(name='Pavans Stipend', balance=0, slug='pavans-stipend', parent=stipends)
Account.objects.create(name='Pauls Stipend', balance=0, slug='pauls-stipend', parent=stipends)
Account.objects.create(name='Jesus Stipend', balance=0, slug='jesus-stipend', parent=stipends)
Account.objects.create(name='Quetzl Stipend', balance=0, slug='quetzl-stipend', parent=stipends)
Account.objects.create(name='Heyzeus Stipend', balance=0, slug='heyzeus-stipend', parent=stipends)
Account.objects.create(name='Domestic Cleaning', balance=0, slug='domestic-cleaning', parent=misc_expense)
Account.objects.create(name='Aliens and shit yo', balance=0, slug='alien-yo', parent=misc_expense)
start_time = datetime.datetime.now()
for day in range(0, 366):
print "Starting day {} of 366".format(day)
date = datetime.date.today() + datetime.timedelta(days=day)
for GJ in range(0, 3):
entry = JournalEntry.objects.create(date=date, memo='test entry')
amt1 = random.randint(100, 80000)
amt2 = random.randint(100, 80000)
Transaction.objects.create(journal_entry=entry, account=get_random_account(), balance_delta=amt1)
Transaction.objects.create(journal_entry=entry, account=get_random_account(), balance_delta=amt1 * -1)
Transaction.objects.create(journal_entry=entry, account=get_random_account(), balance_delta=amt2)
Transaction.objects.create(journal_entry=entry, account=get_random_account(), balance_delta=amt2 * -1)
for CD in range(0, 3):
amt1 = random.randint(100, 80000)
amt2 = random.randint(100, 80000)
main_transaction = Transaction.objects.create(account=get_random_bank(), balance_delta=amt1 + amt2)
entry = BankSpendingEntry.objects.create(date=date, memo='test bank spend', main_transaction=main_transaction, ach_payment=True)
Transaction.objects.create(bankspend_entry=entry, account=get_random_account(), balance_delta=amt1 * -1)
Transaction.objects.create(bankspend_entry=entry, account=get_random_account(), balance_delta=amt2 * -1)
for CR in range(0, 3):
amt1 = random.randint(100, 80000)
amt2 = random.randint(100, 80000)
main_transaction = Transaction.objects.create(account=get_random_bank(), balance_delta=-1 * (amt1 + amt2))
entry = BankReceivingEntry.objects.create(date=date, memo='test bank receive', main_transaction=main_transaction)
Transaction.objects.create(bankreceive_entry=entry, account=get_random_account(), balance_delta=amt1)
Transaction.objects.create(bankreceive_entry=entry, account=get_random_account(), balance_delta=amt2)
print "Time to Execute: {}".format(datetime.datetime.now() - start_time)