aboutsummaryrefslogtreecommitdiff
path: root/app/dispatch/management/commands/insert_fake_data.py
diff options
context:
space:
mode:
authorMitch Riedstra <Mitch@riedstra.us>2017-10-09 15:04:39 -0400
committerMitch Riedstra <Mitch@riedstra.us>2017-10-09 15:04:39 -0400
commit0957977a439d0ca8f33cf6b3c7f2457b0bbf7cd6 (patch)
treeafcc1bb42d72e34cb64e9564d68be4576e33e24c /app/dispatch/management/commands/insert_fake_data.py
parent9f0a825ba66a37428efb178e2c6753c1373e9774 (diff)
downloaddispatch-tracker-0957977a439d0ca8f33cf6b3c7f2457b0bbf7cd6.tar.gz
dispatch-tracker-0957977a439d0ca8f33cf6b3c7f2457b0bbf7cd6.tar.xz
Delete all of the old migrations, remove redundant contact model and add a script for adding fake data
Diffstat (limited to 'app/dispatch/management/commands/insert_fake_data.py')
-rw-r--r--app/dispatch/management/commands/insert_fake_data.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/app/dispatch/management/commands/insert_fake_data.py b/app/dispatch/management/commands/insert_fake_data.py
new file mode 100644
index 0000000..9e8793e
--- /dev/null
+++ b/app/dispatch/management/commands/insert_fake_data.py
@@ -0,0 +1,105 @@
+from django.core.management.base import BaseCommand, CommandError
+from django.contrib.auth import get_user_model
+from dispatch.models import Company, Load
+from faker import Faker
+from datetime import date, timedelta
+import random
+
+# import yaml
+
+User = get_user_model()
+
+class Command(BaseCommand):
+ help = """Generate fake data.\n
+ Example usage: \n
+ ./manage.py insert_fake_data --companies 4 --users 3 --loads 800 --start-date='-16w' --end-date '+16w'
+ """
+
+ fake = Faker()
+ end_date=""
+ start_date=""
+
+ def add_arguments(self, parser):
+ # parser.add_argument('--file', type=str, dest='filename')
+ parser.add_argument('--companies', type=int, dest='companies', default='0')
+ parser.add_argument('--users', type=int, dest='users', default='0')
+ parser.add_argument('--loads', type=int, dest='loads', default='0')
+ parser.add_argument('--start-date', type=str, dest='startdate', default='-2w')
+ parser.add_argument('--end-date', type=str, dest='enddate', default='+2w')
+
+
+ def handle(self, *args, **options):
+
+ # Create the Fake drivers and their loads
+ # for i in range(0, options['companies']):
+ # co = self.fake_company()
+ # for i in range(0, options['users']):
+ # u = self.fake_user()
+ # for i in range(0, options['loads']):
+ # l = self.fake_load(u, co)
+
+ self.end_date=options['enddate']
+ self.start_date=options['startdate']
+
+ company_ids = []
+ user_ids = []
+
+ for i in range(0, options['companies']):
+ co = self.fake_company()
+
+ # We're going to hold the model IDs in memory to access randomly
+ # later on
+ company_ids.append(co.pk)
+
+ for i in range(0, options['users']):
+ u = self.fake_user()
+
+ user_ids.append(u.pk)
+
+ for i in range(0, options['loads']):
+ co_id = company_ids[random.randint(0, len(company_ids)-1)]
+ co = Company.objects.get(pk=co_id)
+
+ u_id = user_ids[random.randint(0, len(user_ids)-1)]
+ u = User.objects.get(pk=u_id)
+
+ l = self.fake_load(u, co)
+
+
+ def fake_company(self):
+ new_company = Company(
+ name = self.fake.company(),
+ address = self.fake.address(),
+ phone_number = self.fake.msisdn(),
+ email_address = self.fake.company_email(),
+ contact_name = self.fake.name(),
+ )
+ new_company.save()
+ return new_company
+
+ def fake_load(self, usr, co):
+ new_load = Load(
+ user=usr,
+ # Because that's going to be random enough
+ load_number=self.fake.license_plate(),
+ description=self.fake.sentence(nb_words=6),
+ company=co,
+ amount=random.randint(150,2500)
+ )
+ # Set the date to something random between last week and next week
+ new_load.date=self.fake.date_between(start_date=self.start_date, end_date=self.end_date)
+ new_load.save()
+ return new_load
+
+
+ def fake_user(self):
+ new_user = User(
+ first_name=self.fake.first_name(),
+ last_name=self.fake.last_name(),
+ email=self.fake.email(),
+ username=self.fake.user_name(),
+ is_active=True
+ )
+ new_user.save()
+ return new_user
+