aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/dispatch/admin.py3
-rw-r--r--app/dispatch/management/__init__.py0
-rw-r--r--app/dispatch/management/commands/__init__.py0
-rw-r--r--app/dispatch/management/commands/insert_fake_data.py105
-rw-r--r--app/dispatch/management/commands/insert_test_data.py50
-rw-r--r--app/dispatch/migrations/0001_initial.py18
-rw-r--r--app/dispatch/migrations/0002_auto_20170628_1516.py22
-rw-r--r--app/dispatch/migrations/0003_auto_20170628_1610.py47
-rw-r--r--app/dispatch/migrations/0004_auto_20170628_1611.py20
-rw-r--r--app/dispatch/migrations/0005_auto_20170628_1614.py21
-rw-r--r--app/dispatch/migrations/0006_auto_20170715_2104.py22
-rw-r--r--app/dispatch/migrations/0007_auto_20170715_2105.py21
-rw-r--r--app/dispatch/migrations/0008_load_load_number.py21
-rw-r--r--app/requirements.txt3
14 files changed, 174 insertions, 179 deletions
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
--- /dev/null
+++ b/app/dispatch/management/__init__.py
diff --git a/app/dispatch/management/commands/__init__.py b/app/dispatch/management/commands/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/dispatch/management/commands/__init__.py
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
@@ -17,14 +17,26 @@ 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,
- ),
- ]
diff --git a/app/requirements.txt b/app/requirements.txt
index 36aac5a..22bd1be 100644
--- a/app/requirements.txt
+++ b/app/requirements.txt
@@ -1,6 +1,9 @@
Django==1.11.5
django-auditlog==0.4.3
django-jsonfield==1.0.1
+Faker==0.8.4
+pyaml==17.10.0
python-dateutil==2.6.1
pytz==2017.2
+PyYAML==3.12
six==1.10.0