You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

availability.py 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.utils.translation import ugettext_lazy as _
  2. class Base(object):
  3. """
  4. Simple based availability class which defaults to everything being
  5. unavailable.
  6. """
  7. is_tax_known = False
  8. is_available_to_buy = False
  9. code = ''
  10. message = ''
  11. lead_time = None
  12. dispatch_date = None
  13. class NoStockRecord(Base):
  14. availability_code = 'outofstock'
  15. availability = _("Unavailable")
  16. class WrappedStockrecord(Base):
  17. def __init__(self, product, stockrecord=None):
  18. self.product = product
  19. self.stockrecord = stockrecord
  20. @property
  21. def is_available_to_buy(self):
  22. if self.stockrecord is None:
  23. return False
  24. if not self.product.get_product_class().track_stock:
  25. return True
  26. return self.stockrecord.is_available_to_buy
  27. @property
  28. def code(self):
  29. return self.stockrecord.availability_code
  30. @property
  31. def message(self):
  32. return self.stockrecord.availability
  33. @property
  34. def lead_time(self):
  35. return self.stockrecord.lead_time
  36. @property
  37. def dispatch_date(self):
  38. return self.stockrecord.dispatch_date