from django.db import models from longclaw.settings import PRODUCT_VARIANT_MODEL class BasketItem(models.Model): basket_id = models.CharField(max_length=32) date_added = models.DateTimeField(auto_now_add=True) quantity = models.IntegerField(default=1) variant = models.ForeignKey(PRODUCT_VARIANT_MODEL, unique=False) class Meta: ordering = ['date_added'] def total(self): return self.quantity * self.variant.price def name(self): return "{} ({})".format(self.variant.product.title, self.variant.ref) def price(self): return self.variant.price def increase_quantity(self, quantity=1): ''' Increase the quantity of this product in the basket ''' self.quantity += quantity self.save() def decrease_quantity(self, quantity=1): ''' ''' self.quantity -= quantity if self.quantity <= 0: self.delete() else: self.save()