From 61dc16200b5ada1c16def723498e61d1bb112da3 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Tue, 24 Oct 2017 19:09:24 -0400 Subject: Remove all old migrations and start fresh. Re-arranged models to better fit Invoice model --- app/dispatch/models.py | 61 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 21 deletions(-) (limited to 'app/dispatch/models.py') diff --git a/app/dispatch/models.py b/app/dispatch/models.py index 2d724d6..d525818 100644 --- a/app/dispatch/models.py +++ b/app/dispatch/models.py @@ -4,6 +4,7 @@ from auditlog.registry import auditlog from auditlog.models import AuditlogHistoryField from django.contrib.auth.models import User from datetime import datetime +from django.core.exceptions import ObjectDoesNotExist from .misc import get_week_dates, paperwork_user_directory_path # Create your models here. @@ -47,6 +48,7 @@ class Paperwork(models.Model): class Identity(models.Model): + user = models.OneToOneField(User, on_delete=models.CASCADE) name = models.CharField(max_length=256) address = models.CharField(max_length=256) city = models.CharField(max_length=256) @@ -56,6 +58,13 @@ class Identity(models.Model): def __str__(self): return "{}".format(self.name) + def set_default(self): + try: + Settings.objects.get(key="default_bill_to").value + except ObjectDoesNotExist: + st = Settings(key="default_bill_to", value=int(self.pk)) + st.save() + class Settings(models.Model): key = models.CharField(max_length=256) value = models.CharField(max_length=256) @@ -64,6 +73,10 @@ class Settings(models.Model): return "{}: {}".format(self.key, self.value) +class UserInvoiceNumber(models.Model): + user = models.OneToOneField(User, on_delete=models.CASCADE) + number = models.IntegerField(default=1200) + class Invoice(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) owner = models.ForeignKey(Identity, on_delete=models.CASCADE, related_name="owner") @@ -79,26 +92,32 @@ class Invoice(models.Model): self.owner.name, self.total()) - def set_invoice_id(self): - # A fucking terrible hack - inv_number = Settings.objects.get(key="user_{:d}_invoice_number".format(self.user.pk)) - inv_number.value = str(int(inv_number.value) + 1) - self.invoice_id = int(inv_number.value) - inv_number.save() + # def __init__(self, user, invoice_date, due_date): + # super(Invoice, self).__init__() + def setup(self): + try: + uinv = UserInvoiceNumber.objects.get(user=self.user.pk) + uinv.number += 1 + uinv.save() + self.invoice_id = uinv.number + except ObjectDoesNotExist: + uinv = UserInvoiceNumber() + uinv.user = self.user + uinv.save() + self.invoice_id = uinv.number + + self.owner = Identity.objects.get(user=self.user.pk) + + bill_to_id = Settings.objects.get(key='default_bill_to') + self.bill_to = Identity.objects.get(pk=int(bill_to_id.value)) + def populate_bill_to(self): pk = Settings.objects.get(key="default_bill_to").value self.bill_to = Identity.objects.get(pk=pk) - def set_owner(self, ident): - setting = Settings(key="user_{:d}_identity".format(self.user.pk), - value=ident.pk) - return setting.save() - def populate_owner(self): - key = "user_{:d}_identity".format(self.user.id) - pk = Settings.objects.get(key=key).value - self.owner = Identity.objects.get(pk=pk) + self.owner = Identity.objects.get(user=self.user.pk) def populate_items_default_date(self): wk = get_week_dates() @@ -153,14 +172,14 @@ 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') @@ -168,20 +187,20 @@ class InvoiceItem(models.Model): # 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) -- cgit v1.2.3