from users.models import CustomUser from django.db import models class TimeStampMixin(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = True class Order(TimeStampMixin): OPEN, ORDERED, DELIVERED, COLLECTED = range(4) ORDER_STATES = {OPEN: "open", ORDERED: "besteld", DELIVERED: "geleverd", COLLECTED: "afgehaald"} amount_33 = models.IntegerField(default=0, blank=True) amount_50 = models.IntegerField(default=0, blank=True) user = models.ForeignKey(CustomUser, null=True, on_delete=models.SET_NULL) state = models.IntegerField(choices=ORDER_STATES.items(), default=OPEN) paid = models.BooleanField(default=False) def state_str(self): return self.ORDER_STATES[self.state] def price_33(self): return self.amount_33 * 28 def price_50(self): return self.amount_50 * 30 def total_price(self): return self.price_33() + self.price_50() def clean(self): if self.amount_33 is None: self.amount_33 = 0 if self.amount_50 is None: self.amount_50 = 0 def __str__(self): return f"{'Paid' if self.paid else 'Unpaid'} order {self.amount_33}x33cl, {self.amount_50}x50cl for {self.user.username} [{self.state_str()}]"