aboutsummaryrefslogtreecommitdiff
path: root/app/dispatch/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/dispatch/views.py')
-rw-r--r--app/dispatch/views.py64
1 files changed, 59 insertions, 5 deletions
diff --git a/app/dispatch/views.py b/app/dispatch/views.py
index c80607e..b729922 100644
--- a/app/dispatch/views.py
+++ b/app/dispatch/views.py
@@ -13,7 +13,7 @@ from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from dispatch.models import Customer, Load, Paperwork, \
- Invoice, UserInvoiceNumber, Identity
+ Invoice, UserInvoiceNumber, Identity, Settings
from dispatch.forms import AddPaperworkForm
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import UserPassesTestMixin
@@ -112,6 +112,23 @@ class DriverDetail(UserPassesTestMixin, DetailView):
uinv.save()
context['invoice_number'] = uinv
+ # A stupid hack to set a default Bill to Identity on first super user
+ # login
+ try:
+ context['default_bill_to'] = Identity.objects.get(pk=\
+ Settings.objects.get(key='default_bill_to').value)
+ except:
+ if self.request.user.is_superuser:
+ try:
+ print("No default Identity Set")
+ bill_to = self.request.user.identity
+ default = Settings(key='default_bill_to', value=bill_to.pk)
+ default.save()
+ except Exception as e:
+ print(e)
+ print("No identity, you should be redirected")
+ context['default_bill_to'] = None
+
return context
@@ -130,7 +147,7 @@ class DriverSummary(UserPassesTestMixin, LoadDateSort):
stats = {}
stats['count'], stats['average'], stats['sum'] = (0, 0, 0)
- stats['incomplete_loads'] = 0
+ context['can_invoice'] = True
loads_by_date = context['loads']
for d in loads_by_date:
@@ -138,8 +155,12 @@ class DriverSummary(UserPassesTestMixin, LoadDateSort):
for l in loads_by_date[d]:
stats['count'] += 1
stats['sum'] += l.amount
- if l.amount == 0:
- stats['incomplete_loads'] += 1
+
+ # Any load not up to par will break the chain
+ print(l)
+ print(l.can_invoice())
+ if not l.can_invoice():
+ context['can_invoice'] = False
if stats['sum'] is not 0 and stats['count'] is not 0:
stats['average'] = stats['sum']/stats['count']
@@ -295,7 +316,7 @@ class LoadDetail(DetailView):
return context
-class LoadUpdate(FilteredUpdateView):
+class LoadUpdate(UserPassesTestMixin, FilteredUpdateView):
template_name = "dispatch/loads/edit.html"
model = Load
fields = []
@@ -325,6 +346,10 @@ class LoadUpdate(FilteredUpdateView):
load.user = self.request.user
return super(LoadUpdate, self).form_valid(form)
+ def test_func(self):
+ return self.request.user.is_superuser or \
+ self.get_object().user.pk == self.request.user.pk
+
class LoadDelete(UserPassesTestMixin, FilteredDeleteView):
template_name = "dispatch/loads/delete.html"
@@ -502,6 +527,35 @@ class IdentityUpdate(UserPassesTestMixin, UpdateView):
# Invoice
+class InvoiceEdit(UserPassesTestMixin, FilteredUpdateView):
+ template_name = "dispatch/invoice/edit.html"
+ model = Invoice
+ fields = []
+
+ default_fields = []
+ superuser_fields = ['user', 'owner', 'bill_to', 'invoice_id',
+ 'invoice_date', 'due_date', 'paid',
+ 'payment_identifer']
+
+ def set_fields(self, user):
+ if user.is_superuser:
+ self.fields = self.superuser_fields
+ else:
+ self.fields = self.default_fields
+
+ def post(self, request, pk):
+ self.set_fields(request.user)
+ return super(InvoiceEdit, self).post(request)
+
+ def get(self, request, pk):
+ self.set_fields(request.user)
+ return super(InvoiceEdit, self).get(request)
+
+ def test_func(self):
+ return self.request.user.is_superuser # or \
+ # self.get_object().user.pk == self.request.user.pk
+
+
class InvoiceList(FilteredListView):
template_name = "dispatch/invoice/list.html"
model = Invoice