diff options
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | app/.gitignore | 2 | ||||
| -rw-r--r-- | app/dispatch/forms.py | 9 | ||||
| -rw-r--r-- | app/dispatch/management/commands/insert_fake_data.py | 39 | ||||
| -rw-r--r-- | app/dispatch/management/commands/insert_test_data.py | 50 | ||||
| -rw-r--r-- | app/dispatch/models.py | 10 | ||||
| -rw-r--r-- | app/dispatch/templates/dispatch/generic_load_listing.html | 15 | ||||
| -rw-r--r-- | app/dispatch/templates/dispatch/loads/detail.html | 9 | ||||
| -rw-r--r-- | app/dispatch/templates/dispatch/loads/edit.html | 2 | ||||
| -rw-r--r-- | app/dispatch/templates/dispatch/paperwork/add.html | 2 | ||||
| -rw-r--r-- | app/dispatch/views.py | 17 |
11 files changed, 50 insertions, 109 deletions
@@ -5,9 +5,11 @@ Requirements going forward: * Change Company to "Customer" * Change "user" to Vendor on the "Add Load Page" + * Auto Fill username when not superuser on add load page * Remove load number from the Load model and all views * Users must be able to initially create new load objects - * Change Name To "Load Pay System" + * Change Name To "Load Pay System" -- we're going to think about it + * Freight Invoicing System * Weekly Total Invoices from the Company(Driver) to software owner * Hide Recent Changes on Loads for non-admins? * /loads diff --git a/app/.gitignore b/app/.gitignore index 3e4485f..f543301 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1,2 +1,4 @@ db.sqlite3* media +tmux.sh +.ropeproject diff --git a/app/dispatch/forms.py b/app/dispatch/forms.py index f3059ee..6333486 100644 --- a/app/dispatch/forms.py +++ b/app/dispatch/forms.py @@ -1,7 +1,7 @@ from django import forms -from dispatch.models import Paperwork, Load +from dispatch.models import Paperwork +# from django.conf import settings -from django.conf import settings class AddPaperworkForm(forms.ModelForm): class Meta: @@ -10,8 +10,3 @@ class AddPaperworkForm(forms.ModelForm): # fields = ('load', 'description', 'document') fields = ('description', 'document') # exclude = ('load',) - -class EditLoadForm(forms.ModelForm): - class Meta: - model = Load - fields = ('date', 'user', 'company', 'load_number', 'description', 'amount') diff --git a/app/dispatch/management/commands/insert_fake_data.py b/app/dispatch/management/commands/insert_fake_data.py index 81c7b66..0919181 100644 --- a/app/dispatch/management/commands/insert_fake_data.py +++ b/app/dispatch/management/commands/insert_fake_data.py @@ -2,26 +2,24 @@ 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 -# So we can check if a user already exists -from django.core.exceptions import ObjectDoesNotExist from django.db.utils import IntegrityError # 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' - """ + ./manage.py insert_fake_data --companies 4 --users 3 --loads 800 + --start-date='-16w' --end-date '+16w' """ fake = Faker() - end_date="" - start_date="" + end_date = "" + start_date = "" def add_arguments(self, parser): # parser.add_argument('--file', type=str, dest='filename') @@ -34,8 +32,8 @@ class Command(BaseCommand): def handle(self, *args, **options): - self.end_date=options['enddate'] - self.start_date=options['startdate'] + self.end_date = options['enddate'] + self.start_date = options['startdate'] company_ids = [] user_ids = [] @@ -61,24 +59,28 @@ class Command(BaseCommand): 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(), + 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): + fake_description = "{}-{} {} {}K".format( + self.fake.month(), self.fake.day_of_month(), + self.fake.license_plate(), random.randint(5, 50)) + print(fake_description) 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), + # load_number=self.fake.license_plate(), + # description=self.fake.sentence(nb_words=6), + description=fake_description, company=co, amount=random.randint(150,2500), delivered_to=self.fake.city(), @@ -95,7 +97,7 @@ class Command(BaseCommand): funame = ffname[0] + flname funame = '%s.%s' % (ffname, flname) - try: + try: new_user = User( first_name=ffname, last_name=flname, @@ -109,4 +111,3 @@ class Command(BaseCommand): except IntegrityError: # Around and around we go until we get something new return self.fake_user() - diff --git a/app/dispatch/management/commands/insert_test_data.py b/app/dispatch/management/commands/insert_test_data.py deleted file mode 100644 index 8ca9a33..0000000 --- a/app/dispatch/management/commands/insert_test_data.py +++ /dev/null @@ -1,50 +0,0 @@ -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/models.py b/app/dispatch/models.py index 8c7cd7d..3174f14 100644 --- a/app/dispatch/models.py +++ b/app/dispatch/models.py @@ -18,9 +18,9 @@ class Company(models.Model): def __str__(self): return self.name + class Load(models.Model): history = AuditlogHistoryField() - load_number = models.CharField(max_length=64,default="") date = models.DateField() user = models.ForeignKey(settings.AUTH_USER_MODEL) company = models.ForeignKey(Company) @@ -29,8 +29,8 @@ class Load(models.Model): amount = models.DecimalField(max_digits=10,decimal_places=2, default="0") def __str__(self): - return "{c}, {d} ( {a} )".format(c=self.company, d=self.description, a=self.amount) - + return "{c}, {d} ( {a} )".format( + c=self.company, d=self.description, a=self.amount) def get_absolute_url(self): return "/loads/view/%i" % self.id @@ -43,6 +43,7 @@ def paperwork_user_directory_path(instance, filename): return 'paperwork/{:d}/'.format(instance.load.pk) + \ str(uuid.uuid4())[0:9] + filename + class Paperwork(models.Model): load = models.ForeignKey(Load, on_delete=models.CASCADE) description = models.CharField(max_length=256) @@ -52,8 +53,5 @@ class Paperwork(models.Model): return "%s" % self.load - - - auditlog.register(Company) auditlog.register(Load) diff --git a/app/dispatch/templates/dispatch/generic_load_listing.html b/app/dispatch/templates/dispatch/generic_load_listing.html index 068ee0c..e92176e 100644 --- a/app/dispatch/templates/dispatch/generic_load_listing.html +++ b/app/dispatch/templates/dispatch/generic_load_listing.html @@ -37,18 +37,17 @@ {% endif %} {% if "Amount" in load_headers %} - {% if load.amount == 0 %} - <td><span class="red-text">{{ load.amount }}</span></td> - {% else %} - <td>{{ load.amount }}</td> - {% endif %} - {% endif %} - {% if "Load Number" in load_headers %} - <td>{{ load.load_number }}</td> + {% if load.amount == 0 %} + <td><span class="red-text">{{ load.amount }}</span></td> + {% else %} + <td>{{ load.amount }}</td> + {% endif %} {% endif %} + {% if "Description" in load_headers %} <td>{{ load.description }}</td> {% endif %} + <td class="right-align"> <!-- <a href="{% url 'load_edit' load.id %}" class="btn orange">Edit</a> --> <a href="{% url 'load_detail' load.id %}" class="btn blue">View</a> diff --git a/app/dispatch/templates/dispatch/loads/detail.html b/app/dispatch/templates/dispatch/loads/detail.html index 3368cb6..02dc5a0 100644 --- a/app/dispatch/templates/dispatch/loads/detail.html +++ b/app/dispatch/templates/dispatch/loads/detail.html @@ -1,12 +1,12 @@ {% extends 'dispatch/base.html' %} -{% block title %}Details - {{ object.load_number }}{% endblock %} +{% block title %}Details - {{ object.description }}{% endblock %} {% block content %} {% load dynamic_key %} <div class="row"> <div class="col s12 m6"> - <h1>Details for {{object.load_number}}</h1> + <h1>Details for {{object.description}}</h1> </div> </div> @@ -32,11 +32,6 @@ </tr> <tr> - <th>Load Number</th> - <td>{{object.load_number}}</td> - </tr> - - <tr> <th>Description</th> <td>{{object.description}}</td> </tr> diff --git a/app/dispatch/templates/dispatch/loads/edit.html b/app/dispatch/templates/dispatch/loads/edit.html index f43c242..3049fb6 100644 --- a/app/dispatch/templates/dispatch/loads/edit.html +++ b/app/dispatch/templates/dispatch/loads/edit.html @@ -1,6 +1,6 @@ {% extends 'dispatch/base.html' %} -{% block title %}Edit - {{ object.load_number }}{% endblock %} +{% block title %}Edit - {{ object.description }}{% endblock %} {% block content %} <div class="row"> diff --git a/app/dispatch/templates/dispatch/paperwork/add.html b/app/dispatch/templates/dispatch/paperwork/add.html index 840a387..f828f9c 100644 --- a/app/dispatch/templates/dispatch/paperwork/add.html +++ b/app/dispatch/templates/dispatch/paperwork/add.html @@ -1,6 +1,6 @@ {% extends 'dispatch/base.html' %} -{% block title %}Edit - {{ object.load_number }}{% endblock %} +{% block title %}Edit - {{ object.description }}{% endblock %} {% block content %} <div class="row"> diff --git a/app/dispatch/views.py b/app/dispatch/views.py index a03868f..0b9c1bf 100644 --- a/app/dispatch/views.py +++ b/app/dispatch/views.py @@ -1,9 +1,9 @@ from django.shortcuts import render, redirect -from django.http import HttpResponse -from django.template import loader +# from django.http import HttpResponse +# from django.template import loader from django.core.urlresolvers import reverse -import django.contrib.auth as auth -from django.conf import settings +# import django.contrib.auth as auth +# from django.conf import settings # Create your views here. from django.views.generic import TemplateView,ListView from django.views.generic.detail import DetailView @@ -13,7 +13,7 @@ from dispatch.models import Company, Load, Paperwork from dispatch.forms import AddPaperworkForm from django.contrib.auth.models import User from django.contrib.auth.mixins import UserPassesTestMixin -from django.http import HttpResponseRedirect +# from django.http import HttpResponseRedirect from datetime import datetime, timedelta from django.utils import formats from dateutil import rrule @@ -41,7 +41,6 @@ def split_loads_by_day(loads,start_date,end_date): split_loads = {} for date in rrule.rrule(rrule.DAILY,dtstart=start_date, until=end_date): - str_date = formats.date_format(date, "SHORT_DATE_FORMAT") if date not in split_loads: split_loads[date] = loads.filter(date=date) @@ -128,7 +127,7 @@ class DriverDetail(UserPassesTestMixin, LoadDateSort): return context -class DriverUpdate(UserPassesTestMixin, UpdateView): +class DriverUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/drivers/edit.html" model = User success_url = reverse_lazy('driver_list') @@ -198,7 +197,7 @@ class LoadList(FilteredListView): class LoadCreate(CreateView): template_name = "dispatch/loads/create.html" model = Load - fields = ['date', 'company', 'load_number', 'description', 'delivered_to', 'amount'] + fields = ['date', 'company', 'description', 'delivered_to', 'amount'] def get(self,request): if request.user.is_superuser: @@ -225,7 +224,7 @@ class LoadDetail(DetailView): class LoadUpdate(FilteredUpdateView): template_name = "dispatch/loads/edit.html" model = Load - fields = ['date', 'company','load_number','description', 'delivered_to', 'amount'] + fields = ['date', 'company', 'description', 'delivered_to', 'amount'] def get(self,request,pk): if request.user.is_superuser: |
