From 0957977a439d0ca8f33cf6b3c7f2457b0bbf7cd6 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Mon, 9 Oct 2017 15:04:39 -0400 Subject: Delete all of the old migrations, remove redundant contact model and add a script for adding fake data --- app/dispatch/admin.py | 3 +- app/dispatch/management/__init__.py | 0 app/dispatch/management/commands/__init__.py | 0 .../management/commands/insert_fake_data.py | 105 +++++++++++++++++++++ .../management/commands/insert_test_data.py | 50 ++++++++++ app/dispatch/migrations/0001_initial.py | 18 +++- app/dispatch/migrations/0002_auto_20170628_1516.py | 22 ----- app/dispatch/migrations/0003_auto_20170628_1610.py | 47 --------- app/dispatch/migrations/0004_auto_20170628_1611.py | 20 ---- app/dispatch/migrations/0005_auto_20170628_1614.py | 21 ----- app/dispatch/migrations/0006_auto_20170715_2104.py | 22 ----- app/dispatch/migrations/0007_auto_20170715_2105.py | 21 ----- app/dispatch/migrations/0008_load_load_number.py | 21 ----- 13 files changed, 171 insertions(+), 179 deletions(-) create mode 100644 app/dispatch/management/__init__.py create mode 100644 app/dispatch/management/commands/__init__.py create mode 100644 app/dispatch/management/commands/insert_fake_data.py create mode 100644 app/dispatch/management/commands/insert_test_data.py delete mode 100644 app/dispatch/migrations/0002_auto_20170628_1516.py delete mode 100644 app/dispatch/migrations/0003_auto_20170628_1610.py delete mode 100644 app/dispatch/migrations/0004_auto_20170628_1611.py delete mode 100644 app/dispatch/migrations/0005_auto_20170628_1614.py delete mode 100644 app/dispatch/migrations/0006_auto_20170715_2104.py delete mode 100644 app/dispatch/migrations/0007_auto_20170715_2105.py delete mode 100644 app/dispatch/migrations/0008_load_load_number.py (limited to 'app/dispatch') diff --git a/app/dispatch/admin.py b/app/dispatch/admin.py index e6617f2..b512e70 100644 --- a/app/dispatch/admin.py +++ b/app/dispatch/admin.py @@ -1,8 +1,7 @@ from django.contrib import admin # Register your models here. -from .models import Load, Contact, Company +from .models import Load, Company admin.site.register(Load) -admin.site.register(Contact) admin.site.register(Company) diff --git a/app/dispatch/management/__init__.py b/app/dispatch/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/dispatch/management/commands/__init__.py b/app/dispatch/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 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 + diff --git a/app/dispatch/management/commands/insert_test_data.py b/app/dispatch/management/commands/insert_test_data.py new file mode 100644 index 0000000..8ca9a33 --- /dev/null +++ b/app/dispatch/management/commands/insert_test_data.py @@ -0,0 +1,50 @@ +from django.core.management.base import BaseCommand, CommandError +from django.contrib.auth import get_user_model +from dispatch.models import Company, Contact, Load + +import yaml + +User = get_user_model() + +class Command(BaseCommand): + help = "Import Objects from a YML file" + + def add_arguments(self, parser): + parser.add_argument('--file', type=str, dest='filename') + + + def handle(self, *args, **options): + + yml_data = open(options['filename']).read() + parsed = yaml.load(yml_data) + + self.parse_users(parsed['users']) + self.parse_loads(parsed['loads']) + + def parse_loads(self, loads): + for l in loads: + try: + new_user = Load( + load_number=u['load_number'], + date=u['date'], + user=u['user_email'], + user=u['user'], + ) + new_user.save() + except: + print("Error on user %s" % u['email']) + + + def parse_users(self, users): + for u in users: + try: + new_user = User( + first_name=u['firstName'], + last_name=u['lastName'], + email=u['email'], + username=u['firstName'] + is_active=u['active'] + ) + new_user.save() + except: + print("Error on user %s" % u['email']) diff --git a/app/dispatch/migrations/0001_initial.py b/app/dispatch/migrations/0001_initial.py index f3b4c88..581c3d5 100644 --- a/app/dispatch/migrations/0001_initial.py +++ b/app/dispatch/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-28 15:15 +# Generated by Django 1.11.5 on 2017-10-09 18:26 from __future__ import unicode_literals from django.conf import settings @@ -16,15 +16,27 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Company', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256)), + ('address', models.CharField(max_length=256)), + ('phone_number', models.DecimalField(decimal_places=0, max_digits=16)), + ('email_address', models.CharField(max_length=256)), + ('contact_name', models.CharField(max_length=256)), + ], + ), migrations.CreateModel( name='Load', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('load_number', models.CharField(default='', max_length=64)), ('date', models.DateField()), - ('company', models.CharField(max_length=256)), ('description', models.CharField(max_length=256)), ('amount', models.DecimalField(decimal_places=2, max_digits=10)), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, unique=True)), + ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dispatch.Company')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ] diff --git a/app/dispatch/migrations/0002_auto_20170628_1516.py b/app/dispatch/migrations/0002_auto_20170628_1516.py deleted file mode 100644 index fb0b039..0000000 --- a/app/dispatch/migrations/0002_auto_20170628_1516.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-28 15:16 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='load', - name='user', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/app/dispatch/migrations/0003_auto_20170628_1610.py b/app/dispatch/migrations/0003_auto_20170628_1610.py deleted file mode 100644 index 839555a..0000000 --- a/app/dispatch/migrations/0003_auto_20170628_1610.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-28 16:10 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0002_auto_20170628_1516'), - ] - - operations = [ - migrations.CreateModel( - name='Company', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=256)), - ('address', models.CharField(max_length=256)), - ('phone_number', models.DecimalField(decimal_places=0, max_digits=16)), - ('email_address', models.CharField(max_length=256)), - ], - ), - migrations.CreateModel( - name='Contact', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(max_length=64)), - ('last_name', models.CharField(max_length=64)), - ('phone_number', models.DecimalField(decimal_places=0, max_digits=16)), - ('email_address', models.CharField(max_length=256)), - ('the_company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dispatch.Company')), - ], - ), - migrations.AlterField( - model_name='load', - name='company', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='dispatch.Company'), - ), - migrations.AddField( - model_name='company', - name='primary_contact', - field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='dispatch.Contact'), - ), - ] diff --git a/app/dispatch/migrations/0004_auto_20170628_1611.py b/app/dispatch/migrations/0004_auto_20170628_1611.py deleted file mode 100644 index ca6de59..0000000 --- a/app/dispatch/migrations/0004_auto_20170628_1611.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-28 16:11 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0003_auto_20170628_1610'), - ] - - operations = [ - migrations.RenameField( - model_name='contact', - old_name='the_company', - new_name='works_for', - ), - ] diff --git a/app/dispatch/migrations/0005_auto_20170628_1614.py b/app/dispatch/migrations/0005_auto_20170628_1614.py deleted file mode 100644 index 291b972..0000000 --- a/app/dispatch/migrations/0005_auto_20170628_1614.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-28 16:14 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0004_auto_20170628_1611'), - ] - - operations = [ - migrations.AlterField( - model_name='company', - name='primary_contact', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='dispatch.Contact'), - ), - ] diff --git a/app/dispatch/migrations/0006_auto_20170715_2104.py b/app/dispatch/migrations/0006_auto_20170715_2104.py deleted file mode 100644 index 391240f..0000000 --- a/app/dispatch/migrations/0006_auto_20170715_2104.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-07-15 21:04 -from __future__ import unicode_literals - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0005_auto_20170628_1614'), - ] - - operations = [ - migrations.AlterField( - model_name='load', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/app/dispatch/migrations/0007_auto_20170715_2105.py b/app/dispatch/migrations/0007_auto_20170715_2105.py deleted file mode 100644 index 72781ab..0000000 --- a/app/dispatch/migrations/0007_auto_20170715_2105.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-07-15 21:05 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0006_auto_20170715_2104'), - ] - - operations = [ - migrations.AlterField( - model_name='load', - name='company', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dispatch.Company'), - ), - ] diff --git a/app/dispatch/migrations/0008_load_load_number.py b/app/dispatch/migrations/0008_load_load_number.py deleted file mode 100644 index b671b87..0000000 --- a/app/dispatch/migrations/0008_load_load_number.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.5 on 2017-09-13 17:05 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dispatch', '0007_auto_20170715_2105'), - ] - - operations = [ - migrations.AddField( - model_name='load', - name='load_number', - field=models.CharField(default="", max_length=64), - preserve_default=False, - ), - ] -- cgit v1.2.3