From d1c5b666d8e55572cdceb3401222d8e4dfecdb58 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Sat, 28 Oct 2017 10:38:02 -0400 Subject: Ability to edit your Invoice Number. Clean up some of the forms for non-admins --- app/dispatch/models.py | 41 ++---------------- .../templates/dispatch/drivers/detail.html | 48 ++++++++++++++++++++-- .../templates/dispatch/userinvoicenumber/edit.html | 18 ++++++++ app/dispatch/urls.py | 2 + app/dispatch/views.py | 35 ++++++++++++++-- 5 files changed, 99 insertions(+), 45 deletions(-) create mode 100644 app/dispatch/templates/dispatch/userinvoicenumber/edit.html (limited to 'app') diff --git a/app/dispatch/models.py b/app/dispatch/models.py index dd088c4..a1e06d7 100644 --- a/app/dispatch/models.py +++ b/app/dispatch/models.py @@ -82,6 +82,9 @@ class UserInvoiceNumber(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) number = models.IntegerField(default=1200) + def get_absolute_url(self): + return '/drivers/view/{:d}'.format(self.user.pk) + class Invoice(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) owner = models.ForeignKey(Identity, on_delete=models.CASCADE, related_name="owner") @@ -97,8 +100,6 @@ class Invoice(models.Model): self.owner.name, self.total()) - # def __init__(self, user, invoice_date, due_date): - # super(Invoice, self).__init__() def setup(self): try: uinv = UserInvoiceNumber.objects.get(user=self.user.pk) @@ -174,42 +175,6 @@ class InvoiceItem(models.Model): -# class Invoice(): -# load_ids = [] -# total = 0.00 -# -# def __init__(self, **kwargs): -# # self.args = kwargs -# if isinstance(kwargs['driver'], User): -# self.driver = kwargs['driver'] -# else: -# raise Exception("'driver' must be a Django User instance") -# -# if isinstance(kwargs.get('start_date'), datetime) and isinstance(kwargs.get('end_date'), datetime): -# self.start_date = kwargs.get('start_date') -# self.end_date = kwargs.get('end_date') -# else: -# dates = get_week_dates() -# self.start_date = dates['start_date'] -# self.end_date = dates['end_date'] -# -# self.loads = Load.objects.filter(user__exact=self.driver.id, -# date__range=(self.start_date, self.end_date)) -# -# for l in self.loads: -# self.load_ids.append(l.pk) -# self.total += float(l.amount) -# -# if isinstance(kwargs.get('bill_to'), Owner): -# self.bill_to = kwargs.get('bill_to') -# else: -# self.bill_to = Owner.objects.get(pk=Settings.objects.get(key='default_owner').value) -# -# -# def __str__(self): -# return "Invoice for {} from {} for: {}".format(self.end_date, self.driver, self.total) - - auditlog.register(Customer) diff --git a/app/dispatch/templates/dispatch/drivers/detail.html b/app/dispatch/templates/dispatch/drivers/detail.html index 9e4e7f3..26a2ba8 100644 --- a/app/dispatch/templates/dispatch/drivers/detail.html +++ b/app/dispatch/templates/dispatch/drivers/detail.html @@ -12,8 +12,12 @@
-
+
+
General Information
+
+ @@ -42,9 +46,13 @@
+ {% if ident is not None %}
-
+
+
Invoice Identity
+
+
{% if request.user.is_superuser %} Make Default Bill To @@ -86,7 +94,7 @@ @@ -97,4 +105,38 @@
{% endif %} + +
+
+
+ Current Invoice Number +
+
+
+ +
+
+ +
+
+ + + + + +
Invoice Number{{invoice_number.number}}
+
+
+ +
+
+

This number will automatically increment when new invoices + are generated from the load summary page

+
+
+ {% endblock %} diff --git a/app/dispatch/templates/dispatch/userinvoicenumber/edit.html b/app/dispatch/templates/dispatch/userinvoicenumber/edit.html new file mode 100644 index 0000000..e858d3f --- /dev/null +++ b/app/dispatch/templates/dispatch/userinvoicenumber/edit.html @@ -0,0 +1,18 @@ +{% extends 'dispatch/base.html' %} + +{% block title %}Edit Invoice Number for {{object.user.username}}{% endblock %} + +{% block content %} +
+
+

+ Invoice Number for {{object.user.username}} +

+
+
+ +
{% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} diff --git a/app/dispatch/urls.py b/app/dispatch/urls.py index 9d8b77b..270c674 100644 --- a/app/dispatch/urls.py +++ b/app/dispatch/urls.py @@ -20,6 +20,8 @@ urlpatterns = [ url(r'^drivers/(?P\d+)/identity/edit/(?P\d+)$', views.IdentityUpdate.as_view(), name='identity_edit'), url(r'^drivers/(?P\d+)/identity/default/(?P\d+)$', views.SetDefaultIdentity, name='identity_default'), + url(r'drivers/(?P\d+)/invoice/edit/(?P\d+)$', views.UserInvoiceNumberUpdate.as_view(), name='userinvoicenumber_edit'), + url(r'^customers/$', views.CustomerList.as_view(), name='customer_list'), url(r'^customers/new$', views.CustomerCreate.as_view(), name='customer_new'), url(r'^customers/view/(?P\d+)$', views.CustomerDetail.as_view(), name='customer_detail'), diff --git a/app/dispatch/views.py b/app/dispatch/views.py index bf4c3fb..087091a 100644 --- a/app/dispatch/views.py +++ b/app/dispatch/views.py @@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse # import django.contrib.auth as auth # from django.conf import settings # Create your views here. +from django.core.exceptions import ObjectDoesNotExist from django.views.generic import TemplateView,ListView from django.views.generic.detail import DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView @@ -90,6 +91,14 @@ class DriverDetail(UserPassesTestMixin, DetailView): except: context['ident'] = None + try: + context['invoice_number'] = \ + UserInvoiceNumber.objects.get(user=self.get_object().pk) + except ObjectDoesNotExist: + uinv = UserInvoiceNumber(user=self.get_object()) + uinv.save() + context['invoice_number'] = uinv + return context @@ -132,7 +141,15 @@ class DriverUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/drivers/edit.html" model = User success_url = reverse_lazy('driver_list') - fields = ['username', 'first_name','last_name','email','groups', 'is_active'] + # fields = ['username', 'first_name','last_name','email','groups'] + fields = ['username', 'first_name','last_name','email'] + + + def get(self,request, *args, **kwargs): + if request.user.is_superuser: + self.fields.append('is_active') + self.fields.append('is_superuser') + return super(DriverUpdate, self).get(request) def get_context_data(self, **kwargs): # Shit gets fucky with super() really fast, but this seems to work @@ -313,7 +330,7 @@ def PaperworkDownload(request, load_id, pk): class UserInvoiceNumberUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/userinvoicenumber/edit.html" - model = UserInvoiceNumber + model = UserInvoiceNumber fields = ['number'] def get(self,request, *args, **kwargs): @@ -341,7 +358,12 @@ def SetDefaultIdentity(request, user_id, pk): class IdentityCreate(UserPassesTestMixin, CreateView): template_name = "dispatch/identity/edit.html" model = Identity - fields = ['user', 'name', 'address', 'city', 'state', 'zip_code'] + fields = ['name', 'address', 'city', 'state', 'zip_code'] + + def get(self, request, *args, **kwargs): + if request.user.is_superuser: + self.fields.insert(1,'user') + return super(IdentityCreate, self).get(request) def test_func(self): return self.request.user.is_superuser or \ @@ -350,7 +372,12 @@ class IdentityCreate(UserPassesTestMixin, CreateView): class IdentityUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/identity/edit.html" model = Identity - fields = ['user', 'name', 'address', 'city', 'state', 'zip_code'] + fields = ['name', 'address', 'city', 'state', 'zip_code'] + + def get(self, request, *args, **kwargs): + if request.user.is_superuser: + self.fields.insert(1,'user') + return super(IdentityUpdate, self).get(request) def test_func(self): return self.request.user.is_superuser or \ -- cgit v1.2.3