Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

abstract_models.py 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from decimal import Decimal
  2. from django.contrib.auth.models import User
  3. from django.db import models
  4. from django.utils.translation import ugettext as _
  5. class AbstractProductRecord(models.Model):
  6. u"""
  7. A record of a how popular a product is.
  8. This used be auto-merchandising to display the most popular
  9. products.
  10. """
  11. product = models.OneToOneField('product.Item')
  12. # Data used for generating a score
  13. num_views = models.PositiveIntegerField(default=0)
  14. num_basket_additions = models.PositiveIntegerField(default=0)
  15. num_purchases = models.PositiveIntegerField(default=0, db_index=True)
  16. # Product score - used within search
  17. score = models.DecimalField(decimal_places=2, max_digits=12, default=Decimal('0.00'))
  18. class Meta:
  19. abstract = True
  20. ordering = ['-num_purchases']
  21. def __unicode__(self):
  22. return u"Record for '%s'" % self.product
  23. class AbstractUserRecord(models.Model):
  24. u"""
  25. A record of a user's activity.
  26. """
  27. user = models.OneToOneField('auth.User')
  28. # Browsing stats
  29. num_product_views = models.PositiveIntegerField(default=0)
  30. num_basket_additions = models.PositiveIntegerField(default=0)
  31. # Order stats
  32. num_orders = models.PositiveIntegerField(default=0, db_index=True)
  33. num_order_lines = models.PositiveIntegerField(default=0, db_index=True)
  34. num_order_items = models.PositiveIntegerField(default=0, db_index=True)
  35. total_spent = models.DecimalField(decimal_places=2, max_digits=12, default=Decimal('0.00'))
  36. date_last_order = models.DateTimeField(blank=True, null=True)
  37. class Meta:
  38. abstract = True
  39. class AbstractUserProductView(models.Model):
  40. user = models.ForeignKey('auth.User')
  41. product = models.ForeignKey('product.Item')
  42. date_created = models.DateTimeField(auto_now_add=True)
  43. class Meta:
  44. abstract = True
  45. def __unicode__(self):
  46. return u"%s viewed '%s'" % (self.user, self.product)
  47. class AbstractUserSearch(models.Model):
  48. user = models.ForeignKey('auth.User')
  49. query = models.CharField(_("Search term"), max_length=255, db_index=True)
  50. date_created = models.DateTimeField(auto_now_add=True)
  51. class Meta:
  52. abstract = True
  53. verbose_name_plural = "User search queries"
  54. def __unicode__(self):
  55. return u"%s searched for '%s'" % (self.user, self.query)