aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/dispatch/migrations/0001_initial.py3
-rw-r--r--app/dispatch/migrations/0002_auto_20171018_1602.py30
-rw-r--r--app/dispatch/models.py17
-rw-r--r--app/dispatch/templates/dispatch/loads/detail.html83
-rw-r--r--app/dispatch/templates/dispatch/paperwork/add.html3
-rw-r--r--app/dispatch/urls.py4
-rw-r--r--app/dispatch/views.py18
7 files changed, 148 insertions, 10 deletions
diff --git a/app/dispatch/migrations/0001_initial.py b/app/dispatch/migrations/0001_initial.py
index b93c66b..7a920f7 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.5 on 2017-10-13 14:52
+# Generated by Django 1.11.5 on 2017-10-18 15:46
from __future__ import unicode_literals
from django.conf import settings
@@ -44,6 +44,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('description', models.CharField(max_length=256)),
+ ('filename', models.CharField(max_length=256)),
('document', models.FileField(upload_to='paperwork/')),
('load', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dispatch.Load')),
],
diff --git a/app/dispatch/migrations/0002_auto_20171018_1602.py b/app/dispatch/migrations/0002_auto_20171018_1602.py
new file mode 100644
index 0000000..6446dd4
--- /dev/null
+++ b/app/dispatch/migrations/0002_auto_20171018_1602.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.5 on 2017-10-18 16:02
+from __future__ import unicode_literals
+
+import dispatch.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('dispatch', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='paperwork',
+ name='filename',
+ ),
+ migrations.AddField(
+ model_name='load',
+ name='delivered_to',
+ field=models.CharField(default='', max_length=256),
+ ),
+ migrations.AlterField(
+ model_name='paperwork',
+ name='document',
+ field=models.FileField(upload_to=dispatch.models.paperwork_user_directory_path),
+ ),
+ ]
diff --git a/app/dispatch/models.py b/app/dispatch/models.py
index 13b4e8b..0dd2ac7 100644
--- a/app/dispatch/models.py
+++ b/app/dispatch/models.py
@@ -2,6 +2,8 @@ from django.db import models
from django.conf import settings
from auditlog.registry import auditlog
+import uuid
+
# Create your models here.
class Company(models.Model):
@@ -20,16 +22,26 @@ class Load(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
company = models.ForeignKey(Company)
description = models.CharField(max_length=256)
+ delivered_to = models.CharField(max_length=256, default="")
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)
+
+
+
+# This is used to set the upload path of the document for Paperwork Objects
+def paperwork_user_directory_path(instance, filename):
+ # We don't want the UUID to be too long, just enough so there aren't any
+ # filename conflicts
+ 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)
- filename = models.CharField(max_length=256)
- document = models.FileField(upload_to='paperwork/')
+ document = models.FileField(upload_to=paperwork_user_directory_path)
def __str__(self):
return "%s" % self.load
@@ -37,5 +49,6 @@ class Paperwork(models.Model):
+
auditlog.register(Company)
auditlog.register(Load)
diff --git a/app/dispatch/templates/dispatch/loads/detail.html b/app/dispatch/templates/dispatch/loads/detail.html
index 3460ccc..bf6d809 100644
--- a/app/dispatch/templates/dispatch/loads/detail.html
+++ b/app/dispatch/templates/dispatch/loads/detail.html
@@ -5,7 +5,88 @@
{% block content %}
<div class="row">
<div class="col s12 m6">
- <h1>Load details {{object.load_number}}</h1>
+ <h1>Details for {{object.load_number}}</h1>
</div>
</div>
+
+<div class="row">
+ <div class="col s12">
+ <div class="right-align">
+ <a class="btn blue" href="{%url 'load_edit' object.id %}">Edit</a>
+ </div>
+ <table class="bordered">
+ <tr>
+ <th>Date</th>
+ <td>{{object.date}}</td>
+ </tr>
+
+ <tr>
+ <th>User</th>
+ <td>{{object.user}}</td>
+ </tr>
+
+ <tr>
+ <th>Company</th>
+ <td>{{object.company}}</td>
+ </tr>
+
+ <tr>
+ <th>Load Number</th>
+ <td>{{object.load_number}}</td>
+ </tr>
+
+ <tr>
+ <th>Description</th>
+ <td>{{object.description}}</td>
+ </tr>
+
+ <tr>
+ <th>Delivered To</th>
+ <td>{{object.delivered_to}}</td>
+ </tr>
+
+ <tr>
+ <th>Amount</th>
+ <td>{{object.amount}}</td>
+ </tr>
+
+
+
+ </table>
+
+ </div>
+
+
+ <div class="row">
+ <div class="col s12" style="padding-top: 50px;">
+ <h4>Attached Files:</h4>
+
+ <div class="right-align">
+ <a class="btn blue" href="{% url 'paperwork_upload' object.id %}">Upload</a>
+ </div>
+
+ <table>
+ <thead>
+ <th>Description: </th>
+ <th></th>
+ </thead>
+ <tbody>
+ {% for p in paperwork_list %}
+ <tr>
+ <td>{{p.description}}</td>
+ <td class="right-align">
+ <a class="btn red" href="{% url 'paperwork_delete' object.id p.id %}">Delete</a>
+ <a class="btn green" target="_blank" href="{{p.document.url}}">Download</a>
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+ </div>
+ </div>
+
+
+</div>
+
{% endblock %}
diff --git a/app/dispatch/templates/dispatch/paperwork/add.html b/app/dispatch/templates/dispatch/paperwork/add.html
index 107c905..840a387 100644
--- a/app/dispatch/templates/dispatch/paperwork/add.html
+++ b/app/dispatch/templates/dispatch/paperwork/add.html
@@ -9,8 +9,6 @@
</div>
</div>
-fuck
-
{% if form.errors %}
{{form.errors}}
@@ -19,6 +17,7 @@ fuck
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
+ <div style="padding-top: 10px;"></div>
<input type="submit" class="btn blue" value="Update" />
</form>
diff --git a/app/dispatch/urls.py b/app/dispatch/urls.py
index 683e91f..9ea0057 100644
--- a/app/dispatch/urls.py
+++ b/app/dispatch/urls.py
@@ -27,6 +27,8 @@ urlpatterns = [
url(r'^loads/delete/(?P<pk>\d+)$', views.LoadDelete.as_view(), name='load_delete'),
- url(r'^loads/upload/(?P<load_id>\d+)$$', views.PaperworkUpload, name='paperwork_upload'),
+ url(r'^loads/upload/(?P<load_id>\d+)$', views.PaperworkUpload, name='paperwork_upload'),
+ url(r'^loads/(?P<load_id>\d+)/paperwork/delete/(?P<pk>\d+)$', \
+ views.PaperworkDelete, name='paperwork_delete'),
]
diff --git a/app/dispatch/views.py b/app/dispatch/views.py
index c436b7d..ef17666 100644
--- a/app/dispatch/views.py
+++ b/app/dispatch/views.py
@@ -188,7 +188,7 @@ class LoadCreate(CreateView):
template_name = "dispatch/loads/create.html"
model = Load
success_url = reverse_lazy('load_list')
- fields = ['date', 'company', 'load_number', 'description','amount']
+ fields = ['date', 'company', 'load_number', 'description', 'delivered_to', 'amount']
def get(self,request):
if request.user.is_superuser:
@@ -207,13 +207,16 @@ class LoadDetail(DetailView):
def get_context_data(self, **kwargs):
context = super(LoadDetail, self).get_context_data(**kwargs)
+
+ context['paperwork_list'] = Paperwork.objects.filter(load=context['object'])
+
return context
class LoadUpdate(FilteredUpdateView):
template_name = "dispatch/loads/edit.html"
model = Load
success_url = reverse_lazy('load_list')
- fields = ['date', 'company','load_number','description','amount']
+ fields = ['date', 'company','load_number','description', 'delivered_to', 'amount']
def get(self,request,pk):
if request.user.is_superuser:
@@ -242,10 +245,19 @@ def PaperworkUpload(request, load_id):
pw = form.save(commit=False)
pw.load = l
pw.save()
- return redirect(reverse('load_edit', kwargs={'pk': load_id}))
+ return redirect(reverse('load_detail', kwargs={'pk': load_id}))
else:
form = AddPaperworkForm()
ctx = { 'form': form, 'load': l }
return render(request, 'dispatch/paperwork/add.html', ctx)
+def PaperworkDelete(request, load_id, pk):
+ # TODO: Someday we should return the errors deleting the file, if any
+ try:
+ p = Paperwork.objects.get(pk=pk)
+ p.delete()
+ except Exception as e:
+ print(e)
+
+ return redirect(reverse('load_detail', kwargs={'pk': load_id}))